Я создал задачу, в которой есть три действия, которые я хотел бы выполнить в следующем порядке:

  1. Показать сообщение пользователю
  2. Резервные файлы (пакетный файл)
  3. Выключение компьютера (командный файл)

Как я понял из этого вопроса, они должны выполняться последовательно от вершины списка действий до низа. Моя проблема в том, что как только я запускаю задачу, компьютер выключается. Пользователю не сообщается ни одного сообщения, и я не знаю, вызывает ли оно задачу резервного копирования. Для завершения резервного копирования требуется около 1 часа. Я проверил, что командный файл работает при двойном щелчке по нему, и это работает.

Можете ли вы помочь мне получить сообщение, которое будет отображаться, и задание резервного копирования будет завершено до завершения работы?

2 ответа2

2

Я думаю, что у меня может быть решение:

В зависимости от содержимого окна сообщения, я могу помочь с этой частью - если в нем просто указан какой-то текст, с помощью кнопки «ОК» или «Да / Нет», то я могу это сделать.

Я предлагаю создать один пакетный файл, чтобы выполнить все операции, которые вы перечислили.

Таким образом, вы можете определить порядок, как вам нравится. И вы знаете, что одна задача не может быть запущена, пока другая не будет завершена.

Код для блока вопросов сильно различается, в зависимости от того, какой блок вы ищете. Сам код довольно прост и занимает всего пару строк, как только вы определились с тем, какой тип сообщения вы ищете.

Вот код для окна сообщения (надеюсь, это то, что вы ищете):

echo wscript.quit MsgBox ("Message", Number, "Title") > message.vbs
wscript //nologo message.vbs
set value=%errorlevel%
del message.vbs
if "%value%"=="1" goto :ok
if "%value%"=="2" goto :cancel
if "%value%"=="3" goto :abort
if "%value%"=="4" goto :retry
if "%value%"=="5" goto :ignore
if "%value%"=="6" goto :yes
if "%value%"=="7" goto :no

Очевидно, вы заменяете Сообщение содержимым окна сообщения, Заголовок - заголовком, а Номер - одним из чисел, приведенных ниже. Убедитесь, что вы включили кавычки, где это необходимо (где они уже находятся в коде выше).

Количество (определяет кнопки в окне сообщения):

  • Если 1, то вы получите окно сообщения с OK и Отмена
  • Если 2, то вы получите окно сообщения с Abort, Retry и Ignore
  • Если 3, то вы получите окно сообщения с Да, Нет и Отмена
  • Если 4, то вы получите сообщение с Да и Нет
  • Если 5, то вы получите окно сообщения с Retry и Cancel
  • Если 6 и выше, вы получите тот же результат, что и 1. (99% уверен)

Переменная %value% дает числовое представление того, какую кнопку вы нажали. В коде, который я перечислил выше, я задокументировал каждый результат в виде фрагмента кода, который отправляется в место в пакетном скрипте под названием. Я надеюсь, что вы понимаете местоположения, определяемые следующим :example , где example - это название местоположения. Это означает, что там, где написано goto :ok , в вашем пакетном скрипте есть местоположение :ok , где для этого результата хранится соответствующий код. Конечно, вам не нужно иметь команду goto в конце оператора if, если вы не хотите, я просто включил это, как простой способ определить, какое значение соответствует какой кнопке.

После окна сообщения в вашем пакетном скрипте у вас будет программа резервного копирования. После этого ваша команда выключения (shutdown -s я предполагаю?)

Это оно! Все, что вам нужно сделать сейчас, это сделать задачу в планировщике задач, запустить пакетный файл и вуаля! У вас должно быть окно сообщений, резервное копирование и завершение работы, выполняемые последовательно.

0

Я наконец нашел проблему, которая была смесью пакетного файла и определения действия в планировщике задач.

  • Первая проблема заключалась в том, что пакетный файл, который я написал, использовал библиотеку 7-zip. Я определил некоторые пути к папкам с определениями букв (в моем случае H:/), которые работали, когда я запускал пакетный файл вручную. Но когда я выполнял задачу, мне приходилось использовать полный сетевой путь, например \\something.com\public\home\...
  • Вторая проблема заключалась в том, что в окне определения действия мне также пришлось определить необязательный аргумент: Start in. Он должен указывать на папку, в которой находится пакетный файл, и, более того, он не должен включать «в начало и конец», как поле местоположения сценария. Не знаю почему.

Теперь действия выполняются последовательно в задании :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .