Como posso iniciar arquivos em lote de outro arquivo em lote enquanto canalizo sua saída e retendo o diretório de trabalho atual?

6

Eu tenho um arquivo em lotes que é executado como uma tarefa agendada. Por exemplo, vamos chamá-lo de alltasks.bat .

Parece o seguinte:

@ECHO OFF
clearwebtemp.bat > clearwebtemp_out.txt
clearblahtemp.bat > clearblahtemp_out.txt
clearblihtemp.bat > clearblihtemp_out.txt

Isso funciona bem quando nenhum dos scripts chamados alterar os diretórios, mas se eles o fizerem, o script principal não conseguirá concluir as chamadas em lote restantes ou canalizar a saída para os arquivos.

Eu tentei usar o comando start , mas que previsivelmente canalizou a saída do comando start em vez da saída do arquivo em lote.

Eu também tentei manter o diretório de trabalho atual usando a variável %CD% na parte superior do script e depois voltar a ele após cada chamada, mas a saída para o arquivo foi feita dentro do diretório em que o script foi alternado. , que não parece fazer sentido.

Existe uma maneira óbvia (ou não tão óbvia) de alcançar o que estou tentando realizar?

    
por Lusitanian 22.08.2012 / 18:25

2 respostas

5

Isso deve fazer o que você está pedindo:

cmd /c clearwebtemp.bat > clearwebtemp_out.txt
cmd /c clearblahtemp.bat > clearblahtemp_out.txt
cmd /c clearblihtemp.bat > clearblihtemp_out.txt
    
por 24.08.2012 / 06:24
1

Outra solução:

@ECHO OFF
pushd .
call clearwebtemp.bat > clearwebtemp_out.txt
popd
pushd .
call clearblahtemp.bat > clearblahtemp_out.txt
popd
pushd .
call clearblihtemp.bat > clearblihtemp_out.txt

ou

@ECHO OFF
call clearwebtemp.bat > clearwebtemp_out.txt
%~d0
cd %~p0
call clearblahtemp.bat > clearblahtemp_out.txt
%~d0
cd %~p0
call clearblihtemp.bat > clearblihtemp_out.txt

Você pode ignorar o %~d0 se os seus morcegos :) permanecerem na mesma unidade.

    
por 16.10.2015 / 00:51