%~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?