如何在不与活动用户交互的情况下在后台执行Windows命令行?
如何在不与活动用户交互的情况下在后台执行Windows命令行?
Answers:
您的问题很模糊,但是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表示“隐藏窗口”。
这有点晚了,但我自己寻找答案时就碰到了这个问题,我发现:
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标签wiki中的“启用脚本”),可以向其传递一个或两个字符串:可执行文件的名称以及可选的参数行。例如:
.\hideproc.ps1 'sc' 'stop SomeService'
我确认这可以在Windows 10上使用。
这就是我的PHP内部服务器进入后台的方式。因此,从技术上讲,它应该对所有人有效。
start /B "" php -S 0.0.0.0:8000 &
谢谢
如果希望命令行程序在用户不知道的情况下运行,请将其定义为Windows服务,它将按计划运行。
schtasks
Windows XP及更高版本中的命令(警告:schtasks
很复杂)。
一个相关的答案,包括2个示例:
调用START / B“我的计算器”“ calc.exe”
调用START / MIN“我的mongod”“%ProgramFiles%\ MongoDB \ Server \ 3.4 \ bin \ mongod.exe”
call Start /MIN "c" "calc.exe"
刚遇到此线程,Windows 7使用Power Shell在后台运行可执行文件,与Unix文件名完全相同,
示例:start -NoNewWindow文件名
帮助开始
NAME开始过程
语法Start-Process [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStandardOutput] [-Wait] [-WindowStyle {普通| 隐藏 最小化 最大化}] [-UseNewEnvironment] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
别名SAP开始