(Primeiro, eu gostaria de recomendar este site de referência útil para o lote:
http://ss64.com/nt/ )
Depois, apenas mais uma explicação útil: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
A variável% ~ dp0
O% ~ DP0 (que é um zero) variável quando referenciados dentro de um arquivo de lote do Windows irá se expandir para o d carta rive e p ath desse arquivo em lotes.
As variáveis% 0-% 9 referem-se aos parâmetros de linha de comando do arquivo em lotes. % 1-% 9 referem-se aos argumentos da linha de comando após o nome do arquivo em lote. % 0 refere-se ao próprio arquivo em lotes.
Se você seguir o caractere de porcentagem (%) com um caractere til (~), poderá inserir um (s) modificador (es) antes do número do parâmetro para alterar a maneira como a variável é expandida. O modificador d se expande para a letra da unidade ep modificador para o caminho do parâmetro.
Exemplo: Digamos que você tenha um diretório em C: chamado bat_files, e nesse diretório esteja um arquivo chamado example.bat. Nesse caso,% ~ dp0 (combinando os modificadores de ep) será expandido para C: \ bat_files.
Confira este artigo da Microsoft para obter uma explicação completa.
Além disso, confira este tópico do fórum .
E uma referência mais clara daqui :
%CmdCmdLine%
retornará toda a linha de comando conforme passada para o CMD.EXE
%*
retornará o restante da linha de comando iniciando no primeiro argumento da linha de comando (no Windows NT 4,% * também inclui todos os espaços iniciais)
%~dn
retornará a letra da unidade de% n (n pode variar de 0 a 9) se% n for um caminho ou nome de arquivo válido (sem UNC)
%~pn
retornará o diretório de% n se% n for um caminho ou nome de arquivo válido (sem UNC)
%~nn
retornará o nome do arquivo apenas% n se% n for um nome de arquivo válido
%~xn
retornará a extensão do arquivo apenas% n se% n for um nome de arquivo válido
%~fn
retornará o caminho completo de% n se% n for um nome ou diretório de arquivo válido
ADICIONAR 1
Acabei de encontrar uma boa referência para o misterioso ~
operador de til.
A %~
string é chamada de operador percentual de til . Você pode encontrá-lo em situações como: %~0
.
A :~
string é chamada de operador de dois pontos . Você pode achar isso %SOME_VAR:~0,-1%
.
ADICIONAR 2 - 13:12 06/06/2018
%1-%9
consulte os argumentos da linha de comandos. Se eles não forem valores de caminho válidos, %~dp1
+ %~dp9
serão expandidos para o mesmo valor que %~dp0
. Mas se forem valores de caminho válidos, eles serão expandidos para seu próprio valor de driver / caminho.
Por exemplo: (batch.bat)
@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on
Execução 1:
D:\Workbench>batch arg1 arg2
~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\
Execução 2:
D:\Workbench>batch c:\123\a.exe e:\abc\b.exe
~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\