Coisas que eu quero fazer
Vamos analisar mais de perto o comando %~dp0, que aparece frequentemente ao escrever arquivos em lote do Windows.
O que exatamente é %~dp0?
Se você incluir %~dp0 em um arquivo em lote, ele será substituído pela pasta onde o arquivo em lote foi salvo.
O texto a seguir costuma ser encontrado no início de um arquivo .bat.
cd /d %~dp0Isso serve para fixar a pasta atual na pasta onde o arquivo em lote está localizado, independentemente de onde o arquivo em lote for executado. (Se o arquivo em lote contiver caminhos relativos, a pasta atual afetará sua operação.)
Aliás, a opção /d altera a unidade atual ao mesmo tempo.
A origem de %~dp0
%~dp0 é %0 com as opções ~ , d e p adicionadas.
Vamos exibir os valores usando F:\bat\test.bat. (@echo off foi omitido)
Este é o resultado obtido ao executar o comando a partir do Explorador de Arquivos.
%0
%0 armazena o caminho do arquivo em lote executado, entre aspas duplas. (Observe que ele contém um caminho relativo quando executado a partir do prompt de comando e um caminho absoluto quando executado a partir do Explorador de Arquivos.)
F:\bat\test.bat:
echo %0saída:
"F:\bat\test.bat"Aliás, %1 conterá o valor do primeiro argumento.
F:\bat\test.bat:
echo %0
echo %1comando:
test.bat arg1saída:
"F:\bat\test.bat"
arg1~
Inserir um ~ entre o % e o 0 em %0 removerá o .
F:\bat\test.bat:
echo %~0saída:
F:\bat\test.batd
Ao inserir d entre o ~ e o 0 em %~0, será exibida a unidade onde o arquivo .bat está salvo. Observe que %d0 não funcionará.
F:\bat\test.bat:
echo %~d0saída:
F:p
Ao inserir p entre o ~ e o 0 em %~0, a pasta onde o arquivo em lote está salvo será exibida. Observe que %p0 não funcionará.
F:\bat\test.bat:
echo %~p0saída:
\bat\%~dp0
%~dp0 é a combinação mostrada acima.
Isso exibirá a unidade conectada e a pasta onde o arquivo em lote está salvo.
Portanto, o caminho absoluto da pasta onde o arquivo .bat está salvo é retornado.
F:\bat\test.bat:
echo %~dp0saída:
F:\bat\

コメント