Eu tenho um bat
arquivo no Windows que executa uma operação procdump . O problema com o arquivo em lotes é que eu preciso primeiro fazer o cd no diretório do arquivo em lotes antes de executar o trabalho, caso contrário, o script não funcionará.
Como mudar para o diretório de arquivos em lotes atual?
Eu tentei o seguinte código no meu procdump.bat
:
cd "%~dp"
procdump -h devenv.exe mydump.txt
Mas falhou, a mensagem de erro é:
O uso a seguir do operador path na substituição de parâmetros em lote é inválido:% ~ dp "
Para formatos válidos, digite CALL /? ou para /?
Edit: A resposta fornecida está funcionando, mas há apenas uma captura: se meu diretório atual for diferente do diretório de arquivos em lote, eu receberia uma mensagem "O sistema não consegue encontrar o caminho especificado". Alguém tem alguma idéia?
fonte
Respostas:
Ok, acho que encontrei aqui o que você quer dizer com isso
%~dp
.Eu acho que o que você realmente quer fazer é o seguinte:
(!) Mas observe que isso ainda não fornecerá o comportamento correto quando você estiver tentando executar seu lote enquanto o diretório atual estiver em outra unidade, poiscd
não altera a unidade ativa.Edit : Aparentemente (obrigado @Yoopergeek ), você pode adicionar o
/D
parâmetro aocd
comando para permitir que ele também altere o inversor ativo.fonte
help call
em umcmd
alerta.%~dp0
cd /D
oucd "%~dp0" /D
não pode ajudar.cd /D "%~dp0"
. Obrigado.Gostaria de deixar um comentário para a resposta da fretje, mas evidentemente não posso ???
De qualquer forma, com relação à nota:
Mas observe que isso ainda não fornecerá o comportamento correto quando você estiver tentando executar seu lote enquanto o diretório atual estiver em outra unidade, pois o CD não altera a unidade ativa.
Use a
/D
chave no comando do CD, e o CD mudará a unidade ativa.fonte