我想在系统启动时使用自动启动中的快捷方式/链接(.lnk)静默运行 Python 3 脚本。
仅当将 stdout 和 stderr 管道传输到某处时,Python 的 pythonw.exe 才会作为无窗口进程与我的脚本一起运行,例如pythonw script.pyw >nul 2>&1
。这在 CMD 中有效。
当作为 Windows 链接目标给出时,它不起作用。它会自动扩展为c:\Python34\pythonw.exe script.pyw >nul 2>&1
。命令周围的双引号会被自动删除。运行链接时,pythonw.exe 进程只会短暂运行。
答案1
我让它工作
C:\Windows\system32\CMD.exe /C start /B pythonw.exe script.pyw >nul 2>&1
运行时,CMD 窗口会短暂显示。似乎 CMD 管道操作符不会被 Windows 链接“机制”解释,而是作为参数/选项发送给程序。这个问题可以通过实际运行 CMD 并使用 /C 来传递 START 命令以将 pythonw 作为单独的进程运行来解决。
进一步阅读:
- http://ss64.com/nt/cmd.html- 启动一个新的 CMD shell 并(可选)运行命令/可执行程序。
- http://ss64.com/nt/start.html- 启动程序、命令或批处理脚本(在新窗口中打开。)
- http://ss64.com/nt/syntax-redirection.html