質問: お世話になります。 現在、XP端末にてバッチをタスクスケジューラにて実行してます。 3分間隔で実行しておりますが、タスクにバッチファイルを直接指定するとプロンプト画面が表示されてしまうため、バッチファイルのショートカットを作成し、タスクにはそのショートカットを指定しております。 で、今回Win7端末に当該タスクを移行するのですが、XP端末よりバッチファイル及びショートカットをコピー致しました。タスクスケジューラに登録しようとしましたが、XPと何か違います。。 XPだと『実行するファイル名』の箇所にショートカットを指定することができますが、Win7だとショートカットを指定しても、バッチファイルのパスに変わってしまいます。 例えば、c:\test.batへのショートカット.lnk を選択しても、c:\test.bat に変わります。 よって、タスクが実行されるとプロンプト画面が表示されることになります。 なお、手動でパス(c:\test.batへのショートカット.lnk)を入力し、タスクを実行すると実行結果が『指定されたファイルが見つかりません』とエラーになってしまいます。 パスを:\test.batへのショートカット としても同エラーになります。 どのようにすれば、タスクにショートカットを指定できるのでしょうか。 ご教授の程、宜しくお願い致します。
回答: バッチファイルというのは、実行可能ファイル(*.exe)ではありません。 バッチファイルというのは、本来、コマンドインタプリタ(cmd.exe)の実行する、スクリプトです。 コマンドインタプリタには、いくつか起動オプションがあります。 「cmd /?」で見ることが出来ますが、その中に「/c 文字列」というオプションがあります。"文字列"を実行します、とあります。 この"文字列"で、バッチファイルを指定することが出来ます。 つまり、タスクに登録すべきコマンドは、「cmd.exe /cバッチファイル名」です。 コマンドラインから、上記を打っても、実行できるのがわかるでしょう。 ですので、これをタスクに登録する場合、タスクの作成から実行スケジュールを設定したあと、「プログラムの開始」を選択、 プログラム/スクリプト として 「C:\windows\system32\cmd.exe」 パラメータとして「/c C:\batch\test.bat」 開始(実行時のカレントディレクトリ)に「C:\batch\」 などと入力して、タスク登録を完了します。 これで、希望のバッチファイルがスケジュールに添って実行できるはずです。