Вопрос: Как выполнить командную строку Windows в фоновом режиме?


Как я могу выполнить командную строку Windows в фоновом режиме, не взаимодействуя с активным пользователем?


127
2017-10-12 06:09


Источник


Можете ли вы указать, что вы хотите сделать? Вы хотите выполнить команду в командной строке в фоновом режиме или вы хотите выполнить всю командную строку в фоновом режиме, так что это не видно на рабочем столе? - omnibrain
мне нужно две трости выполнить команду в командной строке в фоновом режиме или вы хотите выполнить всю командную строку в фоновом режиме - Mohammad AL-Rawabdeh
Дубликаты этот вопрос на ServerFault, - Dan Dascalescu


Ответы:


Ваш вопрос довольно расплывчатый, но есть сообщение на ServerFault который может содержать необходимую информацию. Ответ там описывает, как запустить окно пакетного файла:

Вы можете запустить его молча, используя файл сценария Windows. Бег   Метод позволяет запускать скрипт в невидимом режиме. Создать .vbs   файл, подобный этому

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

и запланировать его. Второй аргумент в этом примере устанавливает окно   стиль. 0 означает «скрыть окно».


24
2017-10-12 06:30



Это потрясающе. SetPoint для Logitech никогда, НИКОГДА, не запускается с окнами. Я запускаю его вручную в течение 3 лет. Имеет ли значение, где находится партия? Я видел, как некоторые люди помещают этот тип пакетного файла в C или в корневой каталог. - ejbytes


Это немного поздно, но я просто столкнулся с этим вопросом, ища ответ самостоятельно, и я нашел это:

START /B program

который в Windows наиболее близок к команде Linux:

program &

Из консоли HELP:

C:\>HELP START

Starts a separate window to run a specified program or command.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title"     Title to display in window title bar.
    path        Starting directory.
    B           Start application without creating a new window. The
                application has ^C handling ignored. Unless the application
                enables ^C processing, ^Break is the only way to interrupt
                the application.

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

Чтобы он не взаимодействовал с пользователем, вы можете перенаправить вывод в файл:

START /B program > somefile.txt

186
2018-05-03 14:28



Мне нравится этот ответ лучше всего, потому что он не открывает другое командное окно - wisbucky
Кажется, что это не работает для меня, похоже, только создает новый экземпляр cmd [?], Однако, если я запускаю его как start /B "" programто это сработало ... - rogerdpack
@rogerdpack Правильно. По какой-то причине в Windows 7 это формат команды. Параметр «» является обязательным параметром заголовка. - ejbytes
К сожалению, если я выйду из окна оболочки, в котором я породил этот процесс, похоже, что процесс также завершается. - palswim
@Qwerty: посмотрите MSDN для SetConsoleCtrlHandler - Zan Lynx


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

START "" program

Какой эквивалент Unix

program &

59
2017-09-30 11:44



что такое fg-эквивалент? Можем ли мы закрыть командную строку, и программа по-прежнему будет работать? - Nenotlep
Кроме того, я хочу запустить программу в командной строке и время от времени возвращаться к ней, например, на экране - это можно сделать с этим? Мне нужно закрыть командную строку, но сохранить работоспособную программу. - Nenotlep
Что это за пустой параметр start? Он не работает без него (выполняет только новый экземпляр команды), но start's help ничего не говорит об этом, он утверждает, что все параметры являются optinional (или я не понимаю). - Dawid Ferenczy
@DawidFerenczy start работает без пустого параметра для меня, но я, кажется, получаю оболочки с отдельной конфигурацией, когда я использую пустой параметр, поскольку параметр, который я сделал, когда у меня не было пустого параметра, не используется, когда я использую пустой параметр. Интересно, почему они используют отдельные конфигурации? - HelloGoodbye
@Павел START "" program начинает команду в новом терминале для меня, в то время как program & в Unix запускает команду и выводит вывод на тот же терминал. - HelloGoodbye


START /MIN program 

приведенный выше довольно близок с его Unix-партнером program &


10
2017-09-13 06:55





Вы можете использовать сценарий PowerShell (прокомментированный!):

# Create the .NET objects
$psi = New-Object System.Diagnostics.ProcessStartInfo
$newproc = New-Object System.Diagnostics.Process
# Basic stuff, process name and arguments
$psi.FileName = $args[0]
$psi.Arguments = $args[1]
# Hide any window it might try to create
$psi.CreateNoWindow = $true
$psi.WindowStyle = 'Hidden'
# Set up and start the process
$newproc.StartInfo = $psi
$newproc.Start()
# Return the process object to the caller
$newproc

Сохраните его как .ps1 файл. После включения выполнения сценария (см. Раздел Включение скриптов в вики-файлы PowerShell), вы можете передать ему одну или две строки: имя исполняемого файла и, при необходимости, строку аргументов. Например:

.\hideproc.ps1 'sc' 'stop SomeService'

Я подтверждаю, что это работает в Windows 10.


5
2017-09-01 22:20



yep start / b больше не работает. - Sajuuk


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


1
2017-09-30 14:00



Как ты это делаешь? - barlop
В качестве альтернативы вы можете выполнить запланированную задачу - «Панель управления» - «Администрирование» - «Запланированные задачи» или использовать schtasks команды в Windows XP и выше (предупреждение: schtasks это сложно). - LawrenceC


Связанный ответ с двумя примерами:

  1. Ниже показан файл calc.exe:

вызов START / B "мой calc" "calc.exe"

  1. Иногда переднего плана нежелательно, тогда вы выполняете минимизацию, как показано ниже:

вызовите START / MIN "my mongod" "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"


0
2017-08-09 05:08



Кажется, что это не минимизировано: call Start /MIN "c" "calc.exe" - moondra
правильно, он работает для блокнота: call start / min "n" "notepad.exe" - Manohar Reddy Poreddy