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

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

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

我可以在 Linux 上使用以下命令执行此操作:

python script.py &

然后使用以下命令断开该进程与终端的连接:

disown

在 Windows 上,到目前为止我所拥有的只有这些:

start /b python script.py

但是,如果我关闭 CMD 窗口,脚本就会停止运行。我是否缺少任何额外的命令来让脚本在后台运行?

答案1

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在控制台已经隐藏后您无法输入。

答案2

我发现以下方法对我来说很有效:

run python script.py

注意:这需要 cygwin

相关内容