Синтаксис создания задач SCHTASK.EXE для запуска пакетных файлов, принимающих параметры
У меня есть набор старых пакетных файлов, в которых запланировано выполнение некоторых задач по обслуживанию базы данных, за которой я ухаживаю. Они использовали АТ-команду. База данных была перенесена на сервер Windows 2016, где команда AT устарела. Вместо этого я хочу использовать SCHTASKS.EXE, но у меня возникли некоторые проблемы.
Набор задач обслуживания разбит на три отдельных пакетных файла: Ibak1.bat, Ibak2.bat и Ibak3.bat.
Существует также файл Ibak0.bat, который планирует запуск каждого из этих пакетных файлов от Ibak1 до Ibak3 в разное время.
Ibak0.bat передает набор параметров в Ibak1, Ibak2 и Ibak3. Однако ради моих вопросов мы можем сосредоточиться только на Ibak0.bat и Ibak1.bat. Ibak2 и Ibak3 работают одинаково с вариациями одних и тех же параметров.
Мои вопросы:
Вопрос 1. Можно ли запланировать запуск командного файла с помощью SCHTASKS.EXE?
Вопрос 2: С помощью AT-команды вам нужно было указать целевой пакетный файл для запуска следующим образом:
at %6 /interactive /every:M,T,W,Th,F,S,Su cmd /c "%5Ibak1.bat %1 %2 %3 %4 "
Нужно ли также указывать «cmd /c» с помощью SCHTASKS при планировании пакетных файлов?
Вопрос 3. Когда следует использовать параметр /IT? Ни один из пакетных файлов не требует взаимодействия с пользователем, за исключением того, что они выполняют эхо-вывод в файл журнала.
Вопрос 4: Как видите, из Ibak0.bat в Ibak1.bat передается множество параметров. Каков синтаксис передачи параметров?
Ниже приведены все варианты синтаксиса, которые я пробовал. Я не могу, хоть убей, создать задачу по расписанию, а в некоторых случаях (попытка 3, 10 и 14), когда мне удалось успешно создать задачу, на мгновение вспыхнуло командное окно, но ничто не указывало на то, что задача побежал нормально.
Atempt 1: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR "'%5Ibak1.bat' '%1' '%2' '%3' '%4' " /ST %6 /IT /SC DAILY Outcome: invalid argument
Atempt 2: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR %5Ibak1.bat %1 %2 %3 %4 /ST %6 /IT /SC DAILY Outcome: invalid argument
Atempt 3: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR "%5Ibak1.bat %1 %2 %3 %4" /ST %6 /IT /SC DAILY Outcome: scheduled but did not run. cmd opens but closes immediately.
Atempt 4: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR '"%5Ibak1.bat" %1 %2 %3 %4' /ST %6 /IT /SC DAILY Outcome: can't remember
Atempt 5: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR "%5Ibak1.bat" %1 %2 %3 %4 /ST %6 /IT /SC DAILY Outcome: invalid argument
Atempt 6: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR "%5Ibak1.bat" /%1 /%2 /%3 /%4 /ST %6 /IT /SC DAILY Outcome: invalid argument
Atempt 7: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR "%5Ibak1.bat" \%1 \%2 \%3 \%4 /ST %6 /IT /SC DAILY Outcome: invalid argument
Atempt 8: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR cmd /c "%5Ibak1.bat %1 %2 %3 %4 " /ST %6 /IT /SC DAILY Outcome: invalid argument
Atempt 9: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR cmd "%5Ibak1.bat %1 %2 %3 %4 " /ST %6 /IT /SC DAILY Outcome: invalid argument
Attempt 10: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR "cmd.exe /c \"%5Ibak1.bat %1 %2 %3 %4 \" " /ST %6 /IT /SC DAILY Outcome: scheduled but did not run. cmd opens but closes immediately.
Attempt 11: SchTasks /CREATE /TN Ibak1.Make_Copy_%1 /TR "cmd.exe /k \"%5Ibak1.bat %1 %2 %3 %4 \" " /ST %6 /IT /SC DAILY Outcome: C:\TNS not recognized as a program
Attempt 12: SchTasks /CREATE /TN Ibak1.Make_Copy_%3 /TR c:\TNS\(data)\IBAK\Ibak1.bat %1 %2 %9 /ST %6 /IT /SC DAILY Outcome: Invalid argument/option
Attempt 13: SchTasks /CREATE /TN Ibak1.Make_Copy_%3 /TR "c:\TNS\(data)\IBAK\Ibak1.bat %1 %2 %9 " /ST %6 /IT /SC DAILY Outcome: ERROR: The parameter is incorrect.
Attempt 14: SchTasks /CREATE /TN Ibak1.Make_Copy_%3 /TR "cmd.exe /k \"c:\TNS\(data)\IBAK\Ibak1.bat %1 %2 %9 \" " /ST %6 /IT /SC DAILY Outcome: C:\TNS not recognized as a program
Немного о параметрах, если это важно:
Parameters : %1 Live database file being copied.
Attempts %2 Path to database file. Include terminating "\".
1 to 11 %3 Server Volume or share name to receive copy of DB file being backed up. Do *NOT* Include terminating "\".
%4 Server Path to copy %2%1 to. Include terminating "\" but no drive letter.
%5 Path to batch file collection. Include terminating "\" and drive letter.
%6 Time Ibak1.bat is scheduled to run. Use 24 hour format.
%7 Time Ibak2.bat is scheduled to run. Use 24 hour format.
%8 Time Ibak3.bat is scheduled to run. Use 24 hour format.
Поскольку я думал, что могут возникнуть проблемы с передачей имен папок отдельно от имен файлов для попыток 12 и последующих версий, я использовал полные имена путей для файлов. Вот как я переставил параметры:
Parameters : %1 Live FDB file being copied (full path).
Attempts %2 Live FDB file copy target (full path).
12 onwards %3 FDB identifier (ex.: WILSONS, VTT, SMITH)
%4 RESERVED
%5 RESERVED
%6 Time ibak1.bat is scheduled to run. Use 24 hour format.
%7 Time ibak2.bat is scheduled to run. Use 24 hour format.
%8 Time ibak3.bat is scheduled to run. Use 24 hour format.
%9 Log file name (full path).