2016-08-13 2 views
0

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

ProcessStartInfo psi = new ProcessStartInfo(); 
      psi.FileName = "cmd.exe"; 
      psi.Arguments = string.Format("/K SCHTASKS.EXE /Change /TN \"{0}\" /DISABLE", this.FullTaskName); 
      Process.Start(psi); 

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

Environment.Exit(0); 

, но это завершает процесс и не закрывает открытую командную строку. Мне нужно выйти из командной строки после запуска задачи.

+1

Почему '/ K' используется здесь? Почему бы не назвать 'SCHTASKS.EXE' напрямую? – qxg

ответ

1

Предполагая, что вы делаете сети, чтобы вызвать SCHTASKS.EXE с помощью cmd.exe вы можете сделать следующее

ProcessStartInfo psi = new ProcessStartInfo(); 
     psi.FileName = "cmd.exe"; 
     psi.Arguments = string.Format("/K SCHTASKS.EXE /Change /TN \"{0}\" /DISABLE & exit", this.FullTaskName); 
     Process.Start(psi); 

Обратите внимание на добавление & exit. & позволяет объединять несколько команд, которые будут выполняться последовательно.

+0

это сработало. благодаря – Venkat

1

Когда вы используете переключатель /k, вы просите окно командной строки оставаться открытым. Используйте /c вместо:

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = "cmd.exe"; 
psi.Arguments = string.Format("/C SCHTASKS.EXE /Change /TN \"{0}\" /DISABLE", this.FullTaskName); 
Process.Start(psi); 

Но зачем называть cmd.exe так или иначе? Позвоните напрямую SchTasks.exe.

Смежные вопросы