%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
自動起動のショートカット/リンク (.lnk) を使用して、システムの起動時に Python 3 スクリプトをサイレントに実行したいと思います。
Python の pythonw.exe は、stdout と stderr をどこかにパイプする場合にのみ、私のスクリプトでウィンドウなしのプロセスとして実行されます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 リンク「メカニズム」によって解釈されず、引数/オプションとしてプログラムに送信されるようです。これは、実際に /C で CMD を実行して START コマンドを渡し、pythonw を別のプロセスとして実行することで解決されます。
参考文献:
- http://ss64.com/nt/cmd.html- 新しい CMD シェルを起動し、(オプションで) コマンド/実行可能プログラムを実行します。
- http://ss64.com/nt/start.html- プログラム、コマンド、またはバッチ スクリプトを開始します (新しいウィンドウで開きます)。
- http://ss64.com/nt/syntax-redirection.html