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
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?
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.