держите окно командной строки открытым при запуске запланированной задачи, выполняющей пакетный файл

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

 @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 только если пользователь зарегистрирован"


создайте ярлык для файла Batchfile и поместите его в действие. Работал на меня


Я попробовал все вышеперечисленное, но они не работали для меня. Вот что я сделал, чтобы заставить это работать:

платформа Windows Server 2003 R2 SP2 С использованием ActivePerl У5.10.1

шаги

  1. создать пакетный скрипт DOS -- это запускает фактическую программу, т. е. myscript.летучая мышь!--12-->
  2. Create PERL script для вызова пакетного сценария DOS, т. е. myscript.pl
  3. myscript.pl является 1-строчным скриптом: системы("e:\scripts\myscript.летучая мышь");
  4. создать запланированную задачу: perl myscript.pl

окно командной строки DOS теперь всегда открывается. И что еще более важно, задача теперь успешно выполняется и завершается. Примечание: запланированная задача RunAs user is вход на сервер.