CMD (BAT) конспекты: Планировшик заданий и CMD скрипты. Или почему не работает?
Создав cmd (bat) файлы-скрипты для автоматизации бекапа (backup), столкнулся с проблемой. Созданный файл-скрипт хорошо выполнялся из папки расположения, запускаемый щелчком мыши (у меня настроено на одинарный щелчок), и не хотел должным образом выполняться через планировщик заданий OC MS Windows 8.1.
Гуглением решить проблему не смог, возможно из-за неправильно заданного запроса. Давно подмечено, что "правильно заданный запрос в поисковик Google, решает проблему на 99%"
Данная проблема быстро не решалась, заморачиваться было лень, стал даже подумывать о переходе на сторонние планировщики заданий. Сдерживающим фактором от такого шага была та же лень и тот факт, что файл-скрипт, в обход планировщика, выполнялся правильно, как и задумывалось. В консольном окне скрипта, запущенного из планировщика заданий, сначала указывалось, что нет доступа, после установки галочки "Выполнит с наивысшими правами", подобное сообщение в cmd окне пропало. После этого думал, что проблему решил. Через несколько дней полез в папку, куда записывались бекапы и обнаружил, что новых файлов нет. Повыполняв из планировщика свой скрипт-файл, выяснил, - происходит имитация работы скрипта. То есть, по факту записанного, забекапленного, файла нигде не было.
![]() | |||
В дальнейшем эта галочка была снята, так как ставилась она для решения проблемы, которую она не решила. |
Так как был не совсем очевиден ход выполнения файла-скрипта, в связи с тем, что в нём была строка запрещающая вывод на экран консоли последовательность выполняемых команд.
@echo offПришлось её закомментировать
rem @echo offА также в конец добавить команду паузы:
pauseСкрипт целиком не даю, в планах написать отдельный пост по скриптовому cmd (bat) бекапу.
После чего запустил скрипт из планировщика заданий, нажав "Выполнить". Такая корректировка позволила воочию увидеть путь запускаемого скрипта в консоле. Он оказался подозрительно неправильным, намучившись с постоянными запусками своего скрипта, достаточно хорошо запомнил место его расположения. И этот путь, никак не совпадал с запущенным из планировщика заданий. Но на всякий случай проверил, запустив щелчком мыши этот же скрипт в обход планировщика, из папки расположения. Скрин ниже, наглядно демонстрирует причину невыполнения скрипта в планировщике заданий.
"Рабочая папка (необязательно)", он был пустым и возникал вопрос, а зачем он там нужен и что будет если туда записать этот неявный для планировщика заданий путь.
Заполнив этот пункт правильным местом расположения на винчестере выполняемого скрипта, сохранив результат нажатием на две кнопки ОК и запустив его кнопкой "Выполнить" получил эмоции сравнимые с - "Ура! заработало!". Ощутив некий экстаз от самостоятельно и удачно решенной проблемы, решил зеконспектировать ход выполнения своих действий в виде записи в свой блог. Кстати, галочку "Выполнит с наивысшими правами" - снял, было интересно как поведет себя скрипт - работает и без неё.
Для тех у кого не работают картинки, текстовой ход (один из множества вариантов) выполнения последовательных действий в ОС Windows 8.1. Щелчок правой кнопкой мыши по кнопке пуск; в появившимся меню ищем и щелчком мыши нажимаем на "Управление Компьютером"; в окне "Управления Компьютером" ищем "Служебные программы" и в них "Планировщик Заданий", в котором находим папку с нерадивым файлом-скриптом; мышкой выделяем наш файл-скрипт, а щелчком правой кнопки мыши, получаем список контекстного меню, в котором нажимаем "Свойства"; в открывшимся диалоговом окне "название файла скрипта - свойства" нажимаем вкладку "Действие", выделяем нужный нам скрипт (в моем случае он один, но в принципе может быть и больше) и нажимаем на кнопку "Изменить..."; в следующем появившимся диалоговом окне ищем поле "Рабочая папка (необязательно)" и вводим нужный нам путь (без конечного файла скрипта, просто путь, где лежит сам файл скрипт); нажимаем кнопку ОК везде где она присутствует; проверяем на работоспособность скрипт - нажимая на "Выполнить", как вариант воспользовавшись контекстным меню вызванного щелчком правой кнопки мыши по названию файла-скрипта, при этом не забывая сверятся с полученным конечным результатом.
Решалась проблема наверно больше недели. Правда стоит отметить, что решалась она спустя рукава, не спеша, в ожидании когда проблема решится сама, на подобии - меня осенило (эврика).
Ну, а в заключении решил, аналогично написанным выше образом, сравнить на правильность "взятия" файла-скрипта, запустив его и из планировщика заданий и из места расположения в ручном режиме. Все пути в консоли совпадают, независимо от того как он запускается.
![]() |
Идентичные пути вызова файла скрипта из планировщика заданий и запущенного вручную, с места его расположения, убедительно доказывает правильность внесенных изменений. |
Спасибо, бро. Помогло!
ВідповістиВидалитиСпасибо дружище! Помогло
ВідповістиВидалитиБро, ты сэкономил мне кучу времени!
ВідповістиВидалити