Не запускается bat из планировщика или отладка cmd-скриптов

Очень частая проблема админов, которые учатся писать CMD-скрипты, что сталкиваются с невыполнением скрипта и отсутствием какой-либо информации о работе этого скрипта и ошибок.
Также бывает, что простой запуск «батника» срабатывает, а из Планировщика — нет. В данном случае первым делом проверьте права пользователя на чтение/выполнение/запись на всех участвующих объектах — папки, файлы, батники и сопутствующие файлы.

Отличный способ понять что, где и почему не работает — включить логи cmd или bat скрипта. Для этого, в конце команды, по которой нужна информация о выполнении нужно дописать:

>>c:\logs\command_name_log.txt

Имя и расширение логу можно задавать произвольное. Но лучше соблюдать хоть какой-то контекст.
Например, нам нужно переместить из папки «files» файл «printers.xls» на другой логический диск:

move c:\files\printers.xls d:\files\printers.xls >>c:\logs\move_printers_xls.txt

Важно знать, что в случае, когда файл лога уже существует, одна скобка — это перезапись файла полностью, а две скобки — это дописывание результата в существующий лог.

move c:\files\printers.xls d:\files\printers.xls >c:\logs\move_printers_xls.txt
move c:\files\scaners.xls d:\files\scaners.xls >>c:\logs\move_scaners_xls.txt

Таким образом в логе мы увидим результат выполнения этой команды — отчет об успешном завершение или ошибки.

Еще есть команда «pause», которая просит «нажать любую клавишу для продолжения». Тем самым, окно консоли не успевает закрыться и мы в самой консоли можем увидеть результат выполнения или ошибки.

Для удобства отлавливания проблем, полезно ставить pause после каждой задачи и смотреть результат ее выполнения.

Пример ниже ставит на паузу выполнение скрипта после перемещения каждого файла — printers, scaners, cameras. Дополнительно, создает логи для каждой команды.

move c:\files\printers.xls d:\files\printers.xls >>c:\logs\move_printers_xls.txt
pause
move c:\files\scaners.xls d:\files\scaners.xls >>c:\logs\move_scaners_xls.txt
pause
move c:\files\cameras.xls d:\files\cameras.xls >>c:\logs\move_cameras_xls.txt
pause

Бонус посетителям этой страницы: шаблон для вставки в имя файла или папки даты в формате ГГГГ_ММ_ДД (сегодняшняя дата будет 2019_05_06):

%DATE:~-4%_%DATE:~3,2%_%DATE:~0,2%

Я использую его и в начале файлов, и в конце, в зависимости от ситуации. Ниже в примере я отделил дату от основного имени файла тремя подчеркиваниями:

move c:\files\printers.xls d:\files\printers.xls >>c:\logs\%DATE:~-4%_%DATE:~3,2%_%DATE:~0,2%___move_printers_xls.txt
move c:\files\printers.xls d:\files\printers.xls >>c:\logs\move_printers_xls___%DATE:~-4%_%DATE:~3,2%_%DATE:~0,2%.txt

Создадутся файлы: «2019_05_06___move_printers_xls.txt» и «move_scaners_xls___2019_05_06.txt».

Если у вас имеются русские буквы в именах файлов или папок — при написании батников используйте кодировку кириллица OEM-866. С ней умеет работать Notepad++.

Добавить комментарий