%~dp0
Fornecerá o caminho completo para o script.
%~f0
Fornecerá o caminho completo para o script, incluindo o nome do script.
Suponha que você tenha C:\foo\foo.bat , que precisa se referir a C:\foo\foo.txt . Pode ser executado a partir de um diretório diferente, mas precisa obter foo.txt de seu próprio diretório, não do diretório atual. Obviamente, isso pode ser feito colocando o caminho completo C:\foo\foo.txt em foo.bat .
A diferença é que, no momento em que se escreve o arquivo de lote, não se sabe onde ele ficará na máquina do usuário, então o que o arquivo batch realmente precisa fazer é obter o foo.txt do diretório onde eu moro, onde quer que isso aconteça . (Em um programa em C, eu usaria argv[0] , mas isso não parece funcionar com arquivos em lote.)
Existe uma maneira de fazer isso?