Я пытаюсь автоматизировать VBScript с помощью планировщика задач Windows. Однако я пытался использовать cscript.exe
+ "C:\...\script.vbs"
, но он не запускался. Я также попытался напрямую запустить ту же команду в CMD (cscript.exe "C:\...\script.vbs"
), и она сработала.
В чем может быть проблема?
EDIT:
Я просто попытался переключить параметр на "Run only when user is logged on"
с "Run whether user is logged on or not"
, и он сработал. Мне интересно, есть ли способ сделать запланированную работу моей задачи, даже когда пользователь вышел из системы.
После нескольких часов исследований появился блог Блейка Моррисона (из Microsoft); он упомянул, что
Если вы запускаете .vbs/.ps1 script, попробуйте запустить его из .cmd/.bat script
см. Справка! Моя запланированная задача не запускается…
Этот блог также объясняет множество правил/советов при использовании планировщика заданий.
Итак, создайте файл .cmd/.bat, который вызывает ваш VBScript. Например: cscript.exe YourScript.vbs
будет в вашем .cmd/.bat script.
Напишите командный файл следующим образом:
echo "Started!" > c:\foldergoeshere\log.txt
cscript.exe "C:\...\script.vbs" > c:\foldergoeshere\log.txt
echo "Stopped!" > c:\foldergoeshere\log.txt
Затем планируйте командный файл вместо vbs. Это позволит вам увидеть, что происходит, что мешает ему работать. Любая ошибка, которую вы видели в консоли (CMD), будет выводиться в этот файл журнала между “Started!” и “Остановились!”
Что за хлопот? Я не использую .cmd/.bat и script работает! (Windows7 здесь)
Мой VBS script (как запланированная задача) хорошо работает в любом сценарии этих 4:
- c script и параметр “Запускать только при входе пользователя”
- c script и параметр “Запустить, вошел ли пользователь в систему или нет”
- w script и параметр “Запустить только при входе пользователя”
- w script и параметр “Запустить, вошел ли пользователь в систему или нет”
Только в первом сценарии я сталкиваюсь с черным командным окном, мигающим на моем экране.
Настройки действий:
или
My script, который просто создает файл:
Set objFSO = CreateObject("Scripting.FileSystemObject")
filename = "C:\Temp\" & Hour(Time) & Minute(Time) & Second(Time)
Set objFile = objFSO.CreateTextFile(filename)
Файл .vbs запускается невидимо, что является следствием запуска его с параметром “logged on or not”.
Вам не разрешат вмешиваться в использование пользователя с помощью компьютера, что означает, что вы сможете помочь себе, но не другим.
Прочтите следующий текст в меню справки планировщика заданий:
Контекст безопасности задачи
Вы можете указать, что задача должна выполняться, даже если учетная запись, под которой планируется запуск задачи, не регистрируется при запуске задачи.
Для этого выберите радиокнопку с надписью “Запустить”, вошел ли пользователь в систему или нет.
Если этот переключатель выбран, задачи не будут выполняться в интерактивном режиме.
Чтобы выполнить задачу в интерактивном режиме, выберите “Выполнить”, только когда пользователь зарегистрирован на радиокнопке.
Не раз сталкивались с тем, что VBScript, работающий по плановой задаче, работал отлично в течение нескольких месяцев и лет, но внезапно больше не работал, несмотря на то, что ничего не изменилось. Попробовали реагировать на эту задачу, используя все рецепты, приведенные здесь и в других местах, но без успеха. Мое обходное решение заключалось в создании запланированной задачи new со всеми настройками, скопированными из исходного.
Грег ответил на это https://superuser.com/a/816073
В основном вам нужно создать 2 папки:
Вы должны создать папку (или две на 64-битных окнах):
(32 бита, всегда) C:\Windows\System32\config\systemprofile\Desktop
(64 бит) C:\Windows\SysWOW64\config\systemprofile\Desktop
Исправил проблему для меня (и я мог указать на файл .vbs, а не bat).