2

У меня есть файл .bat S:\BACKUP_db\copytofileserver.bat, который берет некоторые файлы и архивирует их на сетевой диск. Его первая команда - удалить старую резервную копию по определенному сетевому пути, затем упаковать файлы в папку S:\BACKUP_db. Увидеть:

echo ================================================== >> log.txt
echo %date%, %time%: Backup started >> log.txt
set dow=%date:~0,3% >> log.txt

echo %time%: deleting existing backup... >> log.txt
del /F /S /Q /A "\\192.168.1.249\homes\backup\%dow%.7z"  >> log.txt
echo %time%: OK >> log.txt

echo %time%: packing and saving new backup... >> log.txt
if exist *.Backup S:\BACKUP_db\7za a -t7z -mx=1 "\\192.168.1.249\homes\backup\%dow%.7z" S:\Backup_db\*.Backup -m0=BCJ2 -m1=LZMA:d23 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 >> log.txt
echo %time%: OK >> log.txt

echo %time%: deleting local backup files...  >> log.txt
del /F /S /Q /A S:\backup_db\*.Backup  >> log.txt
echo %time%: OK  >> log.txt

echo %date%, %time%: Backup finished >> log.txt

Когда я запускаю этот файл .bat вручную, он работает как шарм (файл очень большой, около 50 ГБ, при архивации он имеет около 5 ГБ), однако, когда я запускаю этот файл .bat в задании планировщика Windows, он запускается нормально, удаляет файлы в сетевом расположении, но затем всегда застревает во время выполнения программы 7zip. Планировщик Windows сообщает, что результат последнего запуска = 0x41306.

Настройки задачи планировщика Windows кажутся правильными: запускать только при входе пользователя в систему, "запускать с наивысшими привилегиями" не имеет значения и т.д.

Странно, раньше это работало, сейчас застревает, и я понятия не имею, почему. Иногда в сетевой папке создается 16-мегабайтный ZIP-файл, иногда 2-гигабайтный файл, который кажется случайным.

второй раунд: ну, это то, что произошло сейчас - я установил файл bat для запуска в указанное время и наблюдал за черным окном с моими выполняемыми командами. Снова произошел сбой, файл был создан: "\192.168.1.249\homes\qi\BackupQIostra\po .7z", он имеет 0,6 ГБ, предполагается, что он должен иметь не менее 5 ГБ. Также в файле bat я заменил все локальные пути на «% ~ dp0», как и предлагалось, без изменений. Вывод файла журнала:

================================================== 
po 04. 08. 2014, 11:00:00,40: Backup started 
11:00:00,44: deleting existing backup... 
Deleted file - \\192.168.1.249\homes\backup\po  .7z
11:00:00,49: OK 
11:00:00,50: packing and saving new backup... 

после этого я запускаю файл .bat двойным щелчком мыши и наблюдаю за тем, что происходит, архивирование проходит успешно, файл 5 ГБ создается, вывод журнала завершен:

================================================== 
po 04. 08. 2014, 11:37:37,60: Backup started 
11:37:37,61: deleting existing backup... 
Deleted file - \\192.168.1.249\homes\backup\po  .7z
11:37:37,63: OK 
11:37:37,63: packing and saving new backup... 

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive \\192.168.1.249\homes\backup\po  .7z

Compressing  20225_20140804030000 - Copy.Backup
Compressing  20225_20140804030000.Backup

Everything is Ok
12:53:59,52: OK 
12:53:59,52: deleting local backup files...  
Deleted file - S:\BACKUP_db\20225_20140804030000 - Copy.Backup
Deleted file - S:\BACKUP_db\20225_20140804030000.Backup
12:54:02,18: OK  
po 04. 08. 2014, 12:54:02,18: Backup finished 

3 ответа3

1

похоже, что делегирование задачи утилите hstart решило проблему. Это своего рода обходной путь, и я теряю возможность получать отзывы от 7zip, но файл bat теперь работает нормально и завершает задачу.

поэтому я заменил это: если существует *.Резервное копирование% ~ dp0\7za a -t7z -mx = 1 "\192.168.1.249\homes\qi\BackupQIostra\% dow% .7z"% ~ dp0 *.Резервное копирование -m0 = BCJ2 -m1 = LZMA: d23 -m2 = LZMA: d19 -m3 = LZMA: d19 -mb0: 1 -mb0s1: 2 -mb0s2: 3 >> log.txt

с этим: если есть .Резервное копирование "% ~ dp0hstart\hstart.exe" /NOCONSOLE /RUNAS /NOUAC /SHELL /WAIT /D = "% ~ dp0" /BELOWNORMAL "% ~ dp07za a -t7z -mx = 1"\192.168.1.249\homes\qi\BackupQIostra\% dow% .7z "% ~ dp0.Резервное копирование -m0 = BCJ2 -m1 = LZMA: d23 -m2 = LZMA: d19 -m3 = LZMA: d19 -mb0: 1 -mb0s1: 2 -mb0s2: 3 ">> log.txt

НО:

теперь, когда я заметил, что он запускается планировщиком, я заметил странную вещь. Мой файл .bat запущен, hstart запускает команду 7zip externaly, а главное черное окно команд, которое ожидает завершения задачи hstart/7zip, исчезает через ~ 5 минут! Но внешняя команда 7zip все еще выполняется, скрыта и завершается правильно. Конечно, файл журнала не завершен, все еще укладывается в середину, так как основное окно разбилось. Так что теперь я точно знаю, что это главное командное окно, которое дает сбой.

0

Я думаю, что текущий каталог% systemroot%\System32 при запуске с сервисом или шедулером. Наверное, нужно добавить:

CD S:\BACKUP_db\

0

Я также получил файл .bat, запущенный от sheduler. Моя проблема была: на вкладке "Настройки" он «остановить задачу, если она выполняется дольше, чем:», и я изменил это. Но внутри триггера у него тоже самое. Это то, что остановило мое консольное приложение за 30 минут (установлено по умолчанию). Так что это работало вручную, но по расписанию произошла ошибка 0x41306. Я попал сюда во время поиска решения, надеюсь, оно кому-нибудь поможет.

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