如何在不与活动用户交互的情况下在后台执行Windows命令行?

评论

您可以指定要做什么吗?您是要在后台的命令行中执行命令还是要在后台执行整个命令行,以使其在桌面上不可见?

我需要两个手杖在后台的命令行中执行命令,还是要在后台执行整个命令行

在ServerFault上重复此问题。

#1 楼

您的问题很模糊,但是ServerFault上有一篇帖子可能包含您需要的信息。那里的答案描述了如何运行隐藏的批处理文件窗口:


您可以改为使用Windows脚本文件来静默运行它。 Run
方法允许您在不可见模式下运行脚本。创建一个像这样的.vbs
文件

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


并计划它。此示例中的第二个参数设置window
样式。 0表示“隐藏窗口”。


评论


太棒了。 SetPoint for Logitech永远不会从Windows开始。我已经手动启动了大约3年。批次在哪里有关系吗?我见过有人将这种类型的批处理文件放在C或根目录下。

– ejbytes
16年1月31日,00:00

#2 楼

这有点晚了,但是我自己寻找答案时就碰到了这个问题,我发现了以下内容:

Linux命令:

START /B program


从控制台帮助系统:

program &


我看到的一个问题是您有多个程序正在写入控制台窗口,它会造成一些混乱和混乱。 >
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.


评论


我最喜欢这个答案,因为它不会打开另一个命令窗口

– Wisbucky
2014年1月3日在16:17

这似乎对我不起作用,它似乎只能创建一个新的cmd实例[?],但是如果我像启动/ B“”程序那样运行它,那么它就可以了...

–rogerdpack
15年6月24日在4:56

@rogerdpack是的。由于Windows 7的某些原因,这是命令格式。 “”是必填标题参数。

– ejbytes
16年1月30日在23:58

不幸的是,如果退出在其中生成该进程的Shell窗口,则该进程似乎也会终止。

–palswim
16年7月21日在22:36

@Qwerty:在MSDN上查看SetConsoleCtrlHandler

–赞·山猫
16年9月12日在19:29

#3 楼

我怀疑您的意思是:在后台运行某些程序,并在继续运行启动的程序的情况下立即返回命令行。
START "" program


评论


fg等价的是什么?我们可以关闭命令提示符,程序仍然运行吗?

–乔尔·佩尔顿(Joel Peltonen)
14-10-15在11:34

另外,我想在命令提示符下运行一个程序并不时返回它,就像在屏幕上一样-这样做可行吗?我需要能够关闭命令提示符,但保持运行的程序可用。

–乔尔·佩尔顿(Joel Peltonen)
14-10-15在11:36

start的空参数是什么?没有它就无法工作(仅执行一个新的命令实例),但是start的帮助没有说明任何内容,它指出所有参数都是可选的(或者我不理解)。

– David FerenczyRogožan
2015年10月14日在17:41



@DawidFerenczy start可以在没有空参数的情况下工作,但是当我使用空参数时,我似乎得到了具有单独配置的外壳,就像我没有空参数时所做的设置一样使用空参数。我想知道为什么他们使用单独的配置?

–你好再见
16年4月13日在15:23

@Paul START“”程序在我的新终端中启动命令,而Unix中的program&在其中运行命令,并将输出打印到同一终端。

–你好再见
16年4月13日在15:25

#4 楼

START /MIN program 


以上版本与Unix版本相当接近

#5 楼

您可以使用以下(注释!)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上使用。

评论


yep start / b不再起作用。

– Sajuuk
18年5月6日下午5:32

#6 楼

这就是我的PHP内部服务器进入后台的方式。因此从技术上讲,它应该对所有人都有效。

start /B "" php -S 0.0.0.0:8000 &


感谢

#7 楼

一个相关的答案,有2个示例:

下面打开calc.exe:


调用START / B“ my calc”“ calc.exe” >

有时不希望有前台,然后按如下所示最小化运行:呼叫START / MIN“ my mongod”“%ProgramFiles%\ MongoDB \ Server \ 3.4 \ bin \ mongod.exe”

希望有帮助。

评论


这似乎没有最小化运行它:调用Start / MIN“ c”“ calc.exe”

–moondra
18年3月12日在4:19

正确,它适用于记事本:调用start / min“ n”“ notepad.exe”

–Manohar Reddy Poreddy
18 Mar 12 '18 at 6:44

因此,它适用于窗口应用程序,但不适用于控制台应用程序。如图所示,可以通过STARTUPINFO :: wShowWindow(包括SW_HIDE)将SW_ *传递给CreateProcessW。

– 0xC0000022L
18年8月14日在18:57

什么是完整的命令,上面带有“启动”或其他工具?我们需要编写另一个程序吗?

–Manohar Reddy Poreddy
18年8月15日在1:50

#8 楼

如果您希望命令行程序在用户不知道的情况下运行,请将其定义为Windows服务,它将按计划运行。

评论


你是怎样做的?

– barlop
2011-09-30 19:26

或者,您可以将其设置为计划任务-控制面板->管理工具->计划任务,或在Windows XP及更高版本中使用schtasks命令(警告:schtasks很复杂)。

–LawrenceC
2012年4月6日19:02



#9 楼

您可以在此链接中看到执行此操作的正确方法:

如何在不显示命令窗口的情况下运行计划任务

总结,您必须选中“运行是否用户是否已登录”。按“确定”后,应输入任务用户凭据。

#10 楼

刚遇到此线程
Windows 7,使用Power Shell,在后台运行可执行文件,与Unix文件名完全相同&

示例:start -NoNewWindow文件名

帮助启动

名称
启动过程

SYNTAX
启动过程[-FilePath] [[-ArgumentList]] [-凭据] [- 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>]


别名
saps
start