Windows - 关闭 cmd 后在后台运行进程

mul*_*rse 16 windows command-line process

我有一个 Python 脚本,我想在 Windows 上将其作为后台进程运行。

我可以在 Linux 上这样做:

python script.py &
Run Code Online (Sandbox Code Playgroud)

然后从终端断开进程:

disown
Run Code Online (Sandbox Code Playgroud)

在 Windows 上,到目前为止我所拥有的就是:

start /b python script.py
Run Code Online (Sandbox Code Playgroud)

但是,如果我关闭 CMD 窗口,脚本将停止运行。我在这里缺少任何额外的命令来保持脚本在后台运行吗?

Che*_*yDT 7

start应该已经是正确的方向了。但是,/b将其附加到同一个控制台。现在的问题是,当控制台窗口关闭时,与此控制台关联的任何进程也将关闭。

您可以使用startwithout /b,然后它将在新控制台中运行。如果你想在没有控制台窗口的情况下在后台运行它,那么你需要使用 VBScript 或第三方工具:以完全隐藏的方式运行批处理文件

但是,在这种情况下,您将不会再看到 stdout/stderr 输出。不过,您可以将它重定向到一个文件,方法是将其包装在cmd /c your_command > stdout.txt 2> stderr.txt调用中并通过上述方法之一(VBScript、第三方工具等)启动该调用。

或者,您也可以在退出之前隐藏自己的控制台窗口。我只是写了一个小单行程序,它正是这样做的(源代码基本上是ShowWindow(GetConsoleWindow(), SW_HIDE)):http : //share.cherrytree.at/showfile-24286/hide_current_console.exe

这样,您可以使用start /b, 当您想“关闭”您的控制台(技术上隐藏它)时,您将运行hide_current_console & exit它会隐藏控制台,然后关闭 cmd.exe 进程(不是 python 进程) - 在一行中,因为exit在控制台已隐藏后您无法键入。