タスク スケジューラからのバッチ ファイルの実行は、.bat ファイル内の Java コマンドでは機能しません。.bat ファイルを手動で実行すると、正常に動作します。
スケジュールしようとしている単純な .bat ファイルを次に示します。
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_24;
set CMD= "%JAVA_HOME%\bin\java" -version
echo %CMD%
%CMD%
タスク スケジューラからのバッチ ファイルの実行は、.bat ファイル内の Java コマンドでは機能しません。.bat ファイルを手動で実行すると、正常に動作します。
スケジュールしようとしている単純な .bat ファイルを次に示します。
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_24;
set CMD= "%JAVA_HOME%\bin\java" -version
echo %CMD%
%CMD%
コマンドラインに入力すると、ファイルを読み取り、その中にある各行を実行するようにbatchfile.bat
指示されます。cmd.exe
エクスプローラーでバッチ ファイルをダブルクリックするcmd.exe
と、レジストリ内のファイルの関連付けを読み取った後、呼び出しが行われます。
タスクマネージャーはあまり親切ではありません。
したがって、タスクを機能させるには、次のようにスケジュールします(現在、Windowsボックスではなく、メモリから):
cmd /c "c:\full\path\to\your\batchfile.bat"
さらに堅牢にするために、これを先頭に追加することにより、バッチファイルが存在するディレクトリなどの既知のディレクトリから実行されるようにすることができます。
pushd %~dp0
REM .... The original batch file goes here ....
popd
最後に、次のように/d
直後に追加することで、CMD 自動実行エントリを無効にすることができます。cmd
cmd /d /c "c:\full\path\to\your\batchfile.bat"
ixe013 の提案が機能しない場合は、
'Actions'
'Edit' the task
'Start in (optional):' Put the path to the directory where the script is
'C:\Users\Desktop\script.py' がある場合、最後の 1 つについては、'Start in (optional):' フィールドに 'C:\Users\Desktop\' を入力します。
私にとってうまくいったのは、タスクを「ユーザー」( computername\Users )として実行することでした。それを行って、「最高の権限で実行する」にチェックを入れると、問題なく実行されました。
バッチファイルに java.exe のフルパスを指定すると、修正されました。メモ帳に次の行を入力しました。
"C:\Program Files\Java\jdk1.8.0_40\bin\java.exe" -jar "C:\Users\usernameXXXX\Documents\NetBeansProjects\JavaApplication5\dist\JavaApplication5.jar"
これを app1.bat ファイル (C:\temp\app1.bat) として保存します。
タスク スケジューラの [アクション] タブで、バッチ ファイルへのパス (例: C:\temp\app1.bat) を指定します。また、タスク スケジューラの [条件] タブで注意してください。コンピュータは AC 電源に接続されています」
他のすべての方法はうまくいきませんでした。このガイドに従いました: http://richardstk.com/2012/06/15/scheduled-task-to-run-a-batch-file/#comment-6873
バッチ ファイルを実行するには、[Program\script] ボックスにスクリプトの名前 (つまり、script.bat) だけが含まれるように設定し、[Start in] ボックスにスクリプトのフォルダー パスを設定する必要がありました。 (オプション)」ボックス