Я запланировал задачу запуска этого резервного копирования cmd на Windows Server 2012. Раньше он работал без файлов, которые должны хранить папку / файлы с записями всего 6 дней.

SET date_stamp=%DATE:~10,4%-%DATE:~7,2%-%DATE:~4,2%

forfiles /p E:\Test_Backups\ /D -6 /C "cmd /c del /s /q @PATH"
for /f "usebackq" %d in (`dir /ad/b/s "E:\Test_Backups\"`) do rd "%d"
forfiles /p E:\Test2_Backups\ /D -6 /C "cmd /c del /s /q @PATH"
for /f "usebackq" %d in (`dir /ad/b/s "E:\Test2_Backups\"`) do rd "%d"

mkdir "E:\Test_Backups\%date_stamp%"
mkdir "E:\Test2_Backups\%date_stamp%"

::stop some services
"C:\Program Files\7-Zip\7z.exe" a -m0=COPY "E:\Test_Backups\%date_stamp%\%date_stamp%-TestApp.7z" "D:\Test"
::start some services

И теперь это перестало работать. История планировщика заданий гласит, что он запускался, но в «E:\Test_Backups\» ничего не было сохранено. Даже mkdir не запускался.

Могу ли я знать, что происходит?

1 ответ1

0

Я только что понял, что этот цикл должен быть закрыт перед запуском других кодов

for /f "usebackq" %d in (`dir /ad/b/s "E:\Test2_Backups\"`) do rd "%d"

В Интернете есть способы привести к другому сегменту кодов, который считается обходным путем в cmd, но для меня проще всего будет разложить коды для 2 запланированных задач.

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