Синтаксис создания задач 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).

0 ответов

Другие вопросы по тегам