6

У меня есть пакетный файл, который запускается как запланированное задание. Для примера давайте назовем это alltasks.bat .

Это выглядит следующим образом:

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

Это прекрасно работает, когда ни один из вызываемых сценариев не меняет каталоги, но если они это делают, то основной сценарий не может завершить оставшиеся пакетные вызовы или направить вывод в файлы.

Я попытался использовать команду start , но это предсказуемо передавало выходные данные команды start а не самого пакетного файла.

Я также попытался сохранить текущий рабочий каталог, используя переменную %CD% в верхней части сценария, а затем переключаться на него после каждого вызова, но передача в файл была сделана внутри каталога, в который переключился сценарий, что кажется, не имеет смысла.

Есть ли очевидный (или не очень очевидный) способ добиться того, чего я пытаюсь достичь?

2 ответа2

5

Это должно сделать то, что вы просите:

cmd /c clearwebtemp.bat > clearwebtemp_out.txt
cmd /c clearblahtemp.bat > clearblahtemp_out.txt
cmd /c clearblihtemp.bat > clearblihtemp_out.txt
1

Другое решение:

@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

или же

@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

Вы можете игнорировать %~d0 если ваши летучие мыши :) остаются на том же диске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .