次のPythonスクリプト「Script.py」を確認してください。
import subprocess
src_directory = 'Z:\z_7z\Some_Directory'
zip_file_name = 'Test.7z'
cmd = ['7z', 'a', zip_file_name, src_directory, '-mx9']
subprocess.Popen(cmd, stderr = subprocess.STDOUT, stdout = subprocess.PIPE)
私の意図は、Windowsタスクスケジューラを使用してPythonスクリプトをスケジュールすることです。私は以前に他のPythonスクリプトを使用してこれを正常に実行しました。ただし、上記のスクリプトをスケジューリングで実行できません。これがWindowsタスクスケジューラの問題なのかPythonの問題なのかはわかりませんが、私が知っていることは次のとおりです。
上記の「Script.py」は、「Some_Directory」ディレクトリで7zip圧縮を実行するためのスクリプトです。スクリプト自体とそれが呼び出す7z.exeアプリケーションは、両方とも「Y:\z_7z」ディレクトリに保存されます。
手動で実行すると、スクリプトは正常に機能しているようです。スクリプトをダブルクリックすると、正しく実行されます。また、次のコマンドを使用して、コマンドラインからスクリプトを実行できます。
Y:\z_7z\Script.py
ただし、「C:\ Python27」ディレクトリに移動して次の手順を実行しても、スクリプトを手動で実行することはできません。
python Y:\z_7z\Script.py
これにより、次のエラーが発生します。
Line 5 in module subprocess.Popen(cmd, stderr = subprocess.STDOUT, ...)
WindowsError: [Error 2] The system cannot find the file specified
そのすべての情報を提供すると、私が抱えている本当の問題は、Windowsタスクスケジューラがこのスクリプトを実行できないことです(最終実行結果= 0x1)。次のような理想的な構成を含め、さまざまなWindowsタスクスケジューラの構成を試しました。
- プログラム/スクリプト: "C:\ Python27 \ python.exe"
- 引数を追加(オプション): "Y:\ z_7z \ Script.py"
- ユーザーがログオンしているかどうかに関係なく実行
繰り返しになりますが、他のPythonスクリプトをスケジュールしましたが、その前に正常に実行されました。このWindowsタスクスケジューラタスクは正しく構成されているようです。私はいくつかのより高度な設定を閲覧しましたが、この特定のタスクに疑わしいものは何も見つかりませんでした。