держите окно командной строки открытым при запуске запланированной задачи, выполняющей пакетный файл
Я хотел бы, чтобы окно консоли оставалось открытым при выполнении запланированной задачи, которая выполняет пакетный файл. Если я запускаю его вручную, то есть выполняю пакетный файл, окно остается открытым, но через планировщик задач оно не открывается, но я вижу, что задача все еще работает. Я сделал паузу в конце, чтобы сделать это.
@echo off
TITLE PROCESS_MGR
tasklist /FI "IMAGENAME eq JOESMO.exe" | find /I "JOESMO.exe">nul &&(echo PROCESS
JOESMO.exe IS ALREADY RUNNING!
echo %DATE%
echo %TIME%
pause
) || (
echo JOESMO PROCESS IS NOT RUNNING
cmd /c start "JOESMO.exe" "C:UsersxxxxDocuments
Visual Studio 2010ProjectsProjects2013JOESMO.exe"
pause)
Я нашел это предложение cmd / K myscript.bat, но создав задачу в планировщике задач для windows server 2008, я не уверен, где это применить. Я добавлено /k в поле Добавить аргументы в действии изменить в задаче.
5 ответов
в диалоговом окне запланированная задача, непосредственно перед именем пакетного файла, который он собирается запустить (он помечен Program/script
. Теперь у вас есть что-то вроде:
myscript.bat
изменить на
cmd
добавьте в запись **Add Arguments (необязательно) следующее:
/k "C:\My Batch File Folder\MyScript.bat"
проверено на моей системе (Win7 64-бит), и он работал отлично. Я смотрю на Открытое командное окно, которое он создал, когда я набираю этот текст. :-)
к сожалению, решение Кена не работало для меня на сервере Windows 2008 R2 Std, я смог запустить интерактивное окно, изменив настройку запланированных задач с помощью schtasks.exe
в окне команды я сделал следующую команду:
schtasks /Change /TN "My Task" /IT
однако это требует, чтобы вы вошли в систему как тот же пользовательский контекст, в котором выполняется запланированная задача. Поэтому, если ваша запланированная задача использует localsystem "taskaccount", вам придется войти в система как пользователь "taskaccount".
Как ни странно, он работал, когда я вручную запускал задачу, но он не выскочил для меня, когда он стартовал в запланированное время.
ответ Кена не сработал для меня.
нашел этот способ сделать:
в вашем файле BAT (создайте его, если у вас есть только EXE):
start C:/Absolute/Path/To/MyScript.exe myScriptArg
работает как шарм !
Примечание: в запланированной задаче вы должны проверить "Exec только если пользователь зарегистрирован"
Я попробовал все вышеперечисленное, но они не работали для меня. Вот что я сделал, чтобы заставить это работать:
платформа Windows Server 2003 R2 SP2 С использованием ActivePerl У5.10.1
шаги
- создать пакетный скрипт DOS -- это запускает фактическую программу, т. е. myscript.летучая мышь!--12-->
- Create PERL script для вызова пакетного сценария DOS, т. е. myscript.pl
- myscript.pl является 1-строчным скриптом: системы("e:\scripts\myscript.летучая мышь");
- создать запланированную задачу: perl myscript.pl
окно командной строки DOS теперь всегда открывается. И что еще более важно, задача теперь успешно выполняется и завершается. Примечание: запланированная задача RunAs user is вход на сервер.