Командная строка: запускать скрипты в фоновом режиме (эквивалент Linux & / bg)

23

В Linux вы можете сделать это:

$ php blah.php> some.log &

бежать blah.phpв фоновом режиме. Это то же самое, что и команда Ctrl+ .zbg

Существует ли эквивалент одного или обоих для командной строки Windows?

DOOManiac
источник
1
Я не верю, что есть, но вы можете запустить столько командных строк, сколько вам нужно. Что вы пытаетесь достичь?
uSlackr
Я использую> для входа в файл, и я не хочу предлагать просто сидеть там. Возможно, я захочу продолжить работу в том же окне приглашения с тем же каталогом.
DOOManiac
Какая версия windows?
EBGreen
Windows 7 (64-разрядная
версия

Ответы:

41

Windows действительно имеет функциональность, аналогичную Linux &, чтобы запускать процессы, чтобы они не захватывали вашу консоль. Вместо флага командной строки, однако, это префикс команды.

Просто запустите вашу команду с startперед ней, как таковой: C:\> start myprog.exe

Он также работает с командами, а не только с исполняемыми файлами: C:\> start dir

Это запустит новое окно консоли и запустит команду внутри него.

Если вы не хотите, чтобы при запуске команды появлялось новое окно консоли, используйте /Bпереключатель, например так: C:\> start /B myprog.exe

Есть несколько других параметров, которые вы можете указать, чтобы настроить способ запуска команды. Вы можете понять их, прочитав справку startпо использованию start /?.

Бен Ричардс
источник
1

Это может запустить файл в фоновом режиме из командной строки или командного файла

@Echo off
Echo Set WshShell = CreateObject("WScript.Shell")   >>%temp%\ghost.vbs
Echo WshShell.Run chr(34) ^& "MyFile" ^& Chr(34), 0 >>%temp%\ghost.vbs
Echo Set WshShell = Nothing                         >>%temp%\ghost.vbs
start %temp%\ghost.vbs
timeout /t 1 >nul
del %temp%\ghost.vbs

Теперь замените MyFileфайл, который вы хотите запустить в фоновом режиме.

Энтони
источник
2
(1) Можете ли вы объяснить, как это работает (немного)? (2) В основном, это использует startкоманду. Он создает промежуточную вещь, которая запускает команду пользователя, а затем использует startкоманду для запуска промежуточной вещи. Так что это машина Рубе Голдберга . Чем это лучше, чем другой ответ, который предлагает использовать startнапрямую? (3) Вопрос показывает перенаправление ввода / вывода ( > some.log). Как пользователь будет перенаправлять ввод-вывод с этим ответом? Поместить это в командную строку или встроить в WshShell.Runстроку в скрипте?
Скотт
Не отвечайте в комментариях; отредактируйте свой ответ, чтобы сделать его более понятным и полным.
Скотт