Як я можу виконати командний рядок Windows у фоновому режимі, не взаємодіючи з активним користувачем?
Як я можу виконати командний рядок Windows у фоновому режимі, не взаємодіючи з активним користувачем?
Відповіді:
Ваше запитання досить розпливчасте, але на сервері ServerFault є повідомлення, яке може містити потрібну вам інформацію. Відповідь там описує, як запустити приховане вікно пакетного файлу:
Ви можете запустити його безшумно, використовуючи натомість файл Windows Script. Метод запуску дозволяє запускати сценарій у невидимому режимі. Створіть такий
.vbs
файлDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothing
і розкладіть його. Другий аргумент у цьому прикладі задає стиль вікна. 0 означає "приховати вікно".
Це трохи пізно, але я просто зіткнувся з цим питанням, шукаючи відповідь, і знайшов це:
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
start /B "" program
він працював ...
Я підозрюю, що ви маєте на увазі: запустіть щось у фоновому режимі і негайно поверніть командний рядок, продовжуючи запущену програму.
START "" program
Що є еквівалентом Unix
program &
start
? Без нього він не працює (виконує лише новий екземпляр команди), але start
довідка нічого не говорить про це, вказується, що всі параметри є оптимальними (або я не розумію цього).
start
працює без порожнього параметра для мене, але я, здається, отримую оболонки з окремою конфігурацією, коли я використовую порожній параметр, як налаштування, яке я робив, коли у мене не було порожнього параметра, не використовується, коли я використовую порожній параметр. Цікаво, чому вони використовують окремі конфігурації?
START "" program
запускає команду в новому для мене терміналі, в той час як program &
в Unix виконує команду в і друкує вихід на той же термінал.
START /MIN program
вищезгаданий досить ближчий зі своїм колегою Unix program &
Ви можете використовувати цей (прокоментований!) Сценарій 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.
Ось як внутрішній сервер PHP переходить у другий план. Так технічно це повинно працювати для всіх.
start /B "" php -S 0.0.0.0:8000 &
Дякую
Якщо ви хочете, щоб програма командного рядка запускалася без того, щоб користувач навіть про це знав, визначте її як службу Windows, і вона запуститься за графіком.
schtasks
команду в Windows XP і вище (попередження: schtasks
складне).
Відповідна відповідь з двома прикладами:
зателефонуйте START / B "мій calc" "calc.exe"
зателефонуйте START / MIN "мій mongod" "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"
call Start /MIN "c" "calc.exe"
SW_*
з CreateProcessW
допомогою STARTUPINFO::wShowWindow
( в тому числі SW_HIDE
).
Правильний спосіб зробити це можна за посиланням:
Як виконати заплановане завдання без появи вікна команд
Підсумовуючи, ви повинні встановити прапорець "Запустити, чи користувач увійшов чи ні" Введіть облікові дані користувачів, натиснувши "Ок".
щойно натрапив на цю нитку Windows 7, використовуючи оболонку живлення, запускає виконувані файли у фоновому режимі, точно так само, як ім'я файлу unix
приклад: start -NoNewWindow ім'я файлу
допомогти почати
Стартовий процес NAME
SYNTAX Start-Process [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardaput] [-WindowStyle {Звичайний | Прихований | Мінімізований | Максимізовано}] [-UseNewEnvironment] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
ПІДТРИМУЮТЬСЯ соки