Разгребаю черновики :)
Что такое пакетные файлы (или batch files), опытным или заставшим DOS пользователям, объяснять не нужно.
Для миллениалов и зумеров неопытных скажу кратко: это текстовые файлы с командами, которые выполняет командная строка.
Создается такой файл легко: пишем в любом текстовом редакторе типа Блокнота нужные нам команды и сохраняем с расширением .bat (более раннее расширение, появившееся еще в DOS) и .cmd (работают в Windows NT, т.е. в любых окнах с 2000 года :)
После сохранения вид файла изменится на такой:
Запускается как обычная программа (иногда, если командами меняются какие-то настройки, надо запускать от имени администратора).
Потом его можно изменить, нажав в контекстном меню кнопку "Изменить" (да ладна!).
Зачем они нужны, эти пакетные файлы?
Ну, скрипты удобно использовать для быстрой настройки чего-нибудь.
Приведу в качестве примера один мой эникейский файл для очистки очереди печати принтера (была в работе одна модель, которая постоянно вставала колом, если что-то пошло не так, и не давала нормально очистить очередь печати).
Текст, четно говоря, взят из интернета:
net stop spooler
del %systemroot%\system32\spool\printers\*.shd /F /S /Q
del %systemroot%\system32\spool\printers\*.spl /F /S /Q
net start spooler
Запускать его гораздо быстрее, чем вручную тыкаться в Устройства и принтеры и удалять очередь печати там.
Более интересным применением будет выполнение batch-файл автоматически, по расписанию.
Создать задание можно как с помощью приложения с графическим интерфейсом (Планировщик заданий), так и через CMD (SchTasks.exe). Рассмотрю оба метода :)
Планировщик заданий
Можно найти в Пуске поиском или запустить через Выполнить (Win+R), введя control.exe schedtasks или taskschd.msc .
Увидим что-то вроде такого:
Покажу на примере одной моей задачи: необходимо было периодически сохранять файл журнала Datalog, создаваемый APC PowerChute, из одной папки в другую, попутно добавляя расширение .txt и дату сохранения.
Написала такую простоту: заходит в папку, сохраняет в другую и сообщает об этом.
cd C:\Program Files (x86)\APC\PowerChute Business Edition\agent\
copy Datalog D:\APC_datalog\Datalog_%date:~0,2%_%date:~3,2%_%date:~6%.txt
echo Datalog saved
pause
Если кому интересно, что значит %date:~0,2%, %date:~3,2% и %date:~6%
В Винде дата вызывается словом date и имеет формат ДД.ММ.ГГГГ. В названиях файла лучше точки не оставлять, а использовать разрешенный символ, например, нижнее подчеркивание "_".
Чтобы отделить день, месяц и год, используются унарные операторы:
%переменная:~(с какого символа по счету начать), (сколько символов взять)
Так, день начинается с нулевого символа и занимает два, год начинается с шестого и до конца (поэтому второго числа через запятую нет).
Так, батник заготовили, нажимаем Создать задачу... и пошли пошагово:
Вуаля, вы великолепны!
А теперь более хардовый способ:
Через CMD и SchTasks
Запускаем командную строку и вводим волшебное слово SchTasks - получаем список всех заданий компутера.
Чтобы создать задание, нужно ввести команду в следующем формате (в квадратных скобках - необязательные параметры):
schtasks /Create - создание задания
/SC <scheduletype> - тип задания (MINUTE - каждые х минут, MONTHLY - каждые х месяцев, ONCE - один раз и т.д.)
/TN <taskname> - имя задания
/TR <taskrun> - что запускаем (путь до файла)
[/U <user> ] - запуск с правами указанного пользователя
[/P <password>] - задает пароль для текущего (или введенного в /U пользователя)
[/MO <modifier>] - модификатор (какой интервал х минут, месяцев и т.д. установлен для задания)
[/D <day>] - в какой день недели выполняется задача (MON, TUE и т.д.) или в какой день месяца (если задача ежемесячная) - от 1 до 31
[/M <month>] - месяцы, в которые выполняется задание (JAN, FEB и т.д.)
[/I <idletime>] - время простоя перед запуском задания
[/ST <starttime>] - время выполнения, формат ЧЧ:ММ
[/RI <interval>] - интервал повторения в минутах
[/K /ET <endtime> | /DU <duration> ] - время окончания выполнения (ЧЧ:ММ) | длительность выполнения (в минутах). Данные ключи несовместимы друг с другом
[/SD <startdate>] - дата первого запуска задания, формат ДД/ММ/ГГГГ
[/ed <enddate>] - дата последнего запуска задания, формат ДД/ММ/ГГГГ
[/z] - удалить задачу, если она не будет повторно выполнена
Создаю свою задачу заново:
schtasks /create /sc WEEKLY /tn APC Datalog save /tr D:\APC_datalog\SaveDatalog.bat /d MON /st 10:00
Проверяем, добавилась в каталог:
И немного остального функционала:
Немедленный запуск задания
Вводим: schtasks /run /tn Имя_задания
Остановка выполнения запущенного задания
schtasks /end /tn <taskname>
Изменение существующего задания
schtasks /change /tn <Taskname> ... <те же ключи, что и в Create> ...
[/ENABLE] или [/DISABLE] - чтобы включить или отключить задание
Удаление задания
schtasks /delete /tn Имя_задания
Больше инфы можно почитать на сайте мелкомягких или введя /? в CMD.
И, напоследок, список моих статей про CMD:
- Вводная статья цикла: Командная строка Windows. Часть 1. Знакомство
- В Миниобзоре программ-терминалов первый пункт посвящен отправке и получению данных с COM-порта
- Статья о том, как проверять и активировать лицензию MS Office из CMD