命令提示符:在后台运行脚本(相当于 Linux 的 &/bg)

命令提示符:在后台运行脚本(相当于 Linux 的 &/bg)

在 Linux 中你可以这样做:

$ php blah.php > some.log& 复制代码

blah.php在后台运行。这与Ctrl+z然后bg执行命令相同。

是否有与 Windows 命令提示符等效的命令?

答案1

Windows 确实具有与 Linux 类似的功能&,即启动进程,使它们不会接管您的控制台。不过,它不是命令行标志,而是命令前缀。

只需在命令start前面运行即可,例如: C:\> start myprog.exe

它还适用于命令,而不仅仅是可执行文件: C:\> start dir

这将启动一个新的控制台窗口并在其中运行命令。

如果您不想在运行命令时出现新的控制台窗口,请使用开关/B,如下所示: C:\> start /B myprog.exe

您还可以指定其他几个选项来配置如何运行命令。您可以通过阅读start使用 的帮助来了解它们start /?

答案2

我看到一些用户建议使用start/B选项。这种方法的一个问题是它不能很好地与控制台应用程序配合使用。至少根据我的经验,一旦cmd关闭,子进程就会终止。

但是,PowerShell 命令Start-Process -WindowStyle hidden <path to executable>可以完成这项工作。

答案3

这可以从命令提示符或批处理文件在后台运行文件

@Echo off
Echo Set WshShell = CreateObject("WScript.Shell")   >>%temp%\ghost.vbs
Echo WshShell.Run chr(34) ^& "MyFile" ^& Chr(34), 0 >>%temp%\ghost.vbs
Echo Set WshShell = Nothing                         >>%temp%\ghost.vbs
start %temp%\ghost.vbs
timeout /t 1 >nul
del %temp%\ghost.vbs

现在将其替换MyFile为您希望在后台运行的文件。

答案4

只是为了好玩,我尝试将“ssh -N -f -l”放入 Windows Powershell/命令提示符中,它确实进入了后台,但你必须关闭窗口才能摆脱它。我希望有一个 powershell 脚本运行“ssh -N -f -l”来建立端口隧道,但这样我就无法在 ssh 行之后在脚本中放入任何新行,它只会挂在那里,只有当 ssh 失败时才会执行剩余的行。我希望有一个与 Linux 的 & 符号等效的 powershell,这样我就可以转到下一行并运行 mstsc.exe 。

相关内容