chama o arquivo em lote e executa usando seu próprio caminho / diretório

5

Eu tenho arquivos em lote que chamam outros arquivos em lote como este:

e:\foo\master.bat tem o conteúdo:

call e:\bar\run1.bat 

e e:\bar\run1.bat tem o conteúdo

app1.exe

o problema é que quando executo o master.bat app1.exe não será executado, porque ele esperará que ele esteja no diretório e:\foo em vez de estar no diretório e:\bar

    
por Omu 31.05.2018 / 17:52

2 respostas

6

Você não sabe ao certo onde app1.exe está localizado.

Se ele compartilhar a pasta com run1.bat, altere run1.bat

para

@Echo off
Pushd "%~dp0"
app1.exe
popd

ou

@Echo off
"%~dp0app1.exe"

%0 refere-se ao lote atualmente em execução e o modificador ~dp retorna o drive e o caminho (com uma barra invertida à direita).

    
por 31.05.2018 / 18:51
3

A resposta à sua pergunta pode ser tirada de uma pergunta semelhante no Stack Overflow.

Qual é o diretório atual em um arquivo de lote?

Usando as variáveis mencionadas aqui, você pode atualizar o run1.bat para chamar app1.exe com a seguinte linha: %~dp0app1.exe . (A variável% ~ dp0 inclui uma barra final). Isso dirá ao arquivo de lote para executar o executável a partir da localização do arquivo de lote atual.

    
por 31.05.2018 / 18:51