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 como c:\test.bat
:
@echo %0
@pause
Clicar duas vezes nele abrirá um novo prompt de comando com a saída:
"C:\test.bat"
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ê digitar test.bat
Enter, a saída de %0
não terá aspas porque você não digitou aspas:
c:\>test.bat
test.bat
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:
c:\>test
test
Mesmo para tEsT
Enter:
c:\>tEsT
tEsT
Se você digitar "test"
Enter, a saída de %0
terá aspas (desde que você as digitou), mas sem extensão:
c:\>"test"
"test"
Por fim, se você digitar "C:\test.bat"
, a saída será exatamente como se você tivesse clicado duas vezes:
c:\>"C:\test.bat"
"C:\test.bat"
Observe que esses nem todos os valores possíveis %0
podem ser porque você pode chamar o script de outras pastas:
c:\some_folder>/../teST.bAt
/../teST.bAt
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).
echo %~dp0
não funcionará na linha de comando, apenas em um arquivo em lotes. Duh!