PHPスクリプトを毎日同じ時刻に実行する単純な.batがあります。
@echo ON
php C:\path\to\script.php argument
pause
.batファイルをダブルクリックすると正常に動作します。そして、毎日実行するようにスケジュールされたタスクを設定しましたが、バックグラウンドで実行されます。コマンドラインウィンドウはどこにもありません。実際に実行されていることがわかります。
このジョブの実行を監視できるようにしたいと思います。
フォアグラウンドのコマンドラインウィンドウでこれを強制的に実行するにはどうすればよいですか?
Windows7環境。
タスクをスケジュールするときに、その時点でログインするユーザーとして実行するように設定すると、タスクはフォアグラウンドで実行されるはずです。 [全般]タブの下に[非表示]チェックボックスもあります。がオフになっていることを確認します。
私は実際にStackOverflowでこの答えを見つけました。
[スケジュールされたタスク]プロパティの[アクション]タブで、アクションを選択し、[編集]をクリックします。
プログラム/スクリプトフィールドで、これをcmdに変更します。
[引数の追加]フィールドで、これを `/ k" C:\ path\to\job.bat "に変更します。
これは私のために働いた。
Schtasksコマンドは、ユーザーとバックグラウンド/フォアグラウンドをどのように処理するかという点で非常に特殊です。私はコマンドラインからスケジュールされたタスクを作成して管理することを非常に好みます(GUIよりもはるかに面倒ではなく、この方法で非常にすばやく好みに合わせて調整できます)が、フォアグラウンド/バックグラウンドは特定の問題です。例を使用してどのように機能するかを示すには:
次のタスクは30分ごとに実行されます(ただし、バックグラウンドでのみ実行されます!/ ruおよび/ rpを使用すると、これが強制的に発生します)。
schtasks/create/sc minutes/mo 30/tn "Notes"/tr notepad.exe/ru/rp
ただし、次のコマンドを実行すると、資格情報を使用してフォアグラウンドで実行されます(したがって、ジョブを監視する場合は、will次のように実行できます)。
schtasks/create/sc minutes/mo 30/tn "Notes"/tr notepad.exe
初めて見たときはかなり奇妙ですが、ルールがわかれば簡単です。あなたが言うように、GUIで奇妙なことに、フォアグラウンドで機能するには、現在のユーザーとしてユーザー名/パスワードを設定する必要がありますが、これは逆のようです。
その他の例:
schtasks/create/sc分/ mo 30/tn "メモ"/tr "php C:\ path\to\script.php引数"
schtasks/create/sc minutes/mo 30/tn "Notes"/tr "start/min C:\ Users\John\MyPHPscript.bat"
次に、MyPHPscript.batに入れます:php C:\ path\to\script.php引数
特定のタスクを適切に表示するには(使用されているコマンドラインも表示されます):
schtasks/query/tn "Notes"/v/fo list