Как запустить команду в фоновом режиме в Windows?

В linux вы можете использовать команду & для запуска команды на фоне, то же самое будет продолжаться после отключения оболочки. Мне было интересно, есть ли что-то подобное для окон...

Ответы

Ответ 1

Я предполагаю, что вы хотите выполнить команду без интерфейса (возможно, автоматически?). В окнах есть несколько вариантов того, что вы ищете:

  • Лучше всего: напишите свою программу как службу Windows. Они начнутся, когда никто не войдет в сервер. Они позволяют вам выбирать учетную запись пользователя (которая может отличаться от вашей), и они перезапускаются, если они не сработают. Они работают все время, поэтому вы можете автоматизировать задачи в определенное время или по регулярному графику изнутри. Для получения дополнительной информации о том, как написать службу Windows, вы можете прочитать онлайн-учебник, например (http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx).

  • Лучше: запустите команду и скройте окно. Предполагая, что команда является командой DOS, вы можете использовать для этого VB или С# script. Подробнее см. здесь. Пример:

    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run("C:\yourbatch.bat"), 0, True
    

    Вам все равно придется запустить команду вручную или написать задачу для запуска команды. Это одна из самых больших падений этой стратегии.

  • Худший: запустите команду, используя папку автозагрузки. Это выполняется, когда пользователь входит в компьютер

Надеюсь, что это поможет!

Ответ 2

Я считаю, что команда, которую вы ищете, start /b *command*

Для unix nohup представляет "no hangup", который немного отличается от фонового задания (которое было бы *command* &. Я считаю, что приведенная выше команда должна быть похожа на фоновое задание для окон.

Ответ 3

Вы также должны взглянуть на команду at в Windows. Он запустит программу в определенное время в фоновом режиме, которая работает в этом случае.

Другим вариантом является использование программного обеспечения менеджера служб nssm. Это приведет к завершению любой команды, выполняемой в качестве службы Windows.