As variáveis mágicas %
n contêm os argumentos usados para chamar o arquivo: %0
é o caminho para o próprio arquivo bat, %1
é o primeiro argumento depois, %2
é o segundo e assim por diante.
Como os argumentos geralmente são caminhos de arquivo, há alguma sintaxe adicional para extrair partes do caminho. ~d
é drive, ~p
é o caminho (sem unidade), ~n
é o nome do arquivo. Eles podem ser combinados, assim ~dp
como drive + path.
%~dp0
é, portanto, bastante útil em um bastão: é a pasta na qual o arquivo bastão em execução reside.
Você também pode obter outros tipos de informações meta sobre o arquivo: ~t
é o carimbo de data e hora, ~z
é o tamanho.
Procure aqui uma referência para todos os comandos da linha de comandos. Os códigos til-mágicos são descritos em para .
echo %~dp0
não funcionará na linha de comando, apenas em um arquivo em lotes. Duh!%~d0
e%~d0%
?echo %~pd0
fornece a mesma saída que o eco%~dp0
(em vez de inverso conforme o esperado). Além disso, o valor de%0
é diferente dependendo se você clica duas vezes no arquivo em lotes ou o executa no cmd.Eles são substituições variáveis aprimoradas. Eles modificam as variáveis% N usadas em arquivos em lotes. Bastante útil se você gosta de programação em lote no Windows.
Você pode encontrar o acima executando
FOR /?
.fonte
Sim, existem outros atalhos que você pode usar, que são fornecidos abaixo. No seu comando, ~ d0 significaria a letra da unidade do 0º argumento.
Como o argumento 0 é o caminho do script, ele obtém a letra da unidade do caminho para você. Você também pode usar os seguintes atalhos.
Isso também pode ser encontrado diretamente no prompt de comando quando você executa CALL /? ou para /?
fonte
Da análise do nome do arquivo no arquivo em lotes e mais idiomas - Como fazer : Real
O caminho (sem unidade) em que o script está: ~ p0
A unidade em que o script está: ~ d0
fonte
%~s0
, o nome completo do script.Outra dica que ajudaria muito é que, para definir o diretório atual para uma unidade diferente, seria necessário
%~d0
primeirocd %~dp0
. Isso mudará o diretório para a unidade do arquivo em lotes e, em seguida, para sua pasta.Para #oneLinerLovers,
cd /d %~dp0
alterará a unidade e o diretório :)Espero que isso ajude alguém.
fonte
pushd %~dp0
, que não tem problema em alterar a unidade atual e oferece o bônus adicional de poderpopd
voltar à unidade / caminho original posteriormente.%~d0
fornece a letra da unidade do argumento 0 (o nome do script),%~p0
o caminho.fonte
Algumas dicas a serem observadas:
Se você clicar duas vezes no arquivo em lotes
%0
, será cercado por aspas. Por exemplo, se você salvar este arquivo comoc:\test.bat
:Clicar duas vezes nele abrirá um novo prompt de comando com a saída:
Mas se você abrir um prompt de comando e chamá-lo diretamente a partir desse prompt,
%0
fará referência ao que você digitou . Se você digitartest.bat
Enter, a saída de%0
não terá aspas porque você não digitou aspas:Se você digitar
test
Enter, a saída de%0
também não terá extensão, porque você não digitou nenhuma extensão:Mesmo para
tEsT
Enter:Se você digitar
"test"
Enter, a saída de%0
terá aspas (desde que você as digitou), mas sem extensão:Por fim, se você digitar
"C:\test.bat"
, a saída será exatamente como se você tivesse clicado duas vezes:Observe que esses nem todos os valores possíveis
%0
podem ser porque você pode chamar o script de outras pastas:Todos os exemplos mostrados acima também afetarão
%~0
, porque a saída de%~0
é simplesmente a saída de%0
menos aspas (se houver).fonte
Este código explica o uso do caractere ~ tilda, que foi a coisa mais confusa para mim. Depois de entender isso, torna as coisas muito mais fáceis de entender:
fonte
Ele exibe a localização atual do arquivo ou diretório em que você está atualmente. Por exemplo; se o arquivo em lote estava no diretório da área de trabalho, "% ~ dp0" exibia o diretório da área de trabalho. se você quiser exibir o diretório atual com o nome do arquivo atual, digite "% ~ dp0% ~ n0% ~ x0".
fonte