2010-10-12 06:09:11 +0000 2010-10-12 06:09:11 +0000
174
174

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

如何在后台执行windows命令行,不与活动用户交互?

答案 (10)

257
257
257
2013-05-03 14:28:39 +0000

这个问题有点晚了,但我刚刚在自己搜索答案的时候碰到了这个问题,我找到了这个:

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
70
70
70
2011-09-30 11:44:07 +0000

我怀疑你的意思是。在后台运行一些东西,在启动的程序继续运行的情况下,立即返回命令行。

40
40
40
2010-10-12 06:30:43 +0000

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

你可以用Windows脚本文件来代替默默地运行它。运行方法允许你在隐形模式下运行一个脚本。创建一个像这样的

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

并对其进行调度。这个例子中的第二个参数是设置窗口样式。0表示 “隐藏窗口"。

15
15
15
2012-09-13 06:55:32 +0000
START /MIN program

上面的那个和它的Unix版本比较接近program &

7
7
7
2016-09-01 22:20:49 +0000

你可以使用这个(有注释的!)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标签维基中的Enabling Scripts),你可以给它传一个或两个字符串:可执行文件的名称和参数行。例如:

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

我确认这可以在Windows 10上运行。

3
3
3
2018-07-09 04:30:36 +0000

我的PHP内部服务器是这样进入后台的。所以从技术上来说,应该都能用。

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

谢谢

2
2
2
2017-08-09 05:08:06 +0000

相关答案,举2个例子:

  1. 下面打开calc.exe:

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

  1. 有时前台不想要,那么你运行最小化,如下图所示。

call start /min “n” “notepad.exe” call START /MIN “my mongod” “%ProgramFiles%MongoDB\Server3.4\binmongod.exe” 希望对你有帮助。

1
1
1
2011-09-30 14:00:42 +0000

如果你想让命令行程序在用户不知道的情况下运行,那么就把它定义为Windows服务,它将按计划运行。

-1
-1
-1
2015-09-03 14:10:25 +0000

你可以在这个链接中看到正确的方法: 如何在没有命令窗口出现的情况下运行预定任务

总结一下,你需要在 “是否登录 "中选择 "是否运行"。在按下 "OK "后,需要输入任务用户的凭证。

-2
-2
-2
2015-07-13 23:29:17 +0000

刚遇到这个线程的windows 7 ,使用power shell,在后台运行可执行文件,和unix文件名&

完全一样,例如: start -NoNewWindow filename

help start

NAME Start-Process

SYNTAX Start-Process [-FilePath] [[-ArgumentList] ] ] [-证书][-工作目录][-加载用户配置文件] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStandardInput RedirectStandardOutput] [-Wait] [-WindowStyle {Normal | Hidden | Minimized | Maximized}] [-UseNewEnvironment] []

Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]

ALIASES saps start