如何在后台执行Windows命令行?


160

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


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

我需要两个手杖在后台的命令行中执行命令,还是要在后台执行整个命令行
Mohammad AL-Rawabdeh 2010年

Answers:


37

您的问题很模糊,但是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表示“隐藏窗口”。


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

244

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

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

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

3
这似乎对我不起作用,它似乎只能创建一个新的cmd实例[?],但是如果我像这样运行它,start /B "" program那么它就可以起作用...
rogerdpack 2015年

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

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

2
@ Qwerty:在MSDN上查看SetConsoleCtrlHandler
Zan Lynx

68

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

START "" program

Unix相当于

program &

7
fg等值是什么?我们可以关闭命令提示符,并且porgram仍然可以运行吗?
Nenotlep

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

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

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

@Paul START "" program在我的新终端上启动命令,而program &在Unix中,我在其中运行命令并将输出打印到同一终端。
HelloGoodbye '16


6

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


4
yep start / b不再起作用。
Sajuuk


1

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


4
你是怎样做的?
barlop 2011年

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

0

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

  1. 下面打开calc.exe:

调用START / B“我的计算器”“ calc.exe”

  1. 有时前景是不可取的,那么您可以按以下步骤最小化运行:

调用START / MIN“我的mongod”“%ProgramFiles%\ MongoDB \ Server \ 3.4 \ bin \ mongod.exe”


这似乎并未将其最小化:call Start /MIN "c" "calc.exe"
moondra

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

因此,它适用于窗口应用程序,但不适用于控制台应用程序。图中,作为一个能通过SW_*CreateProcessW经由STARTUPINFO::wShowWindow(包括SW_HIDE)。
0xC0000022L

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


-2

刚遇到此线程,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开始

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.