- 締切済み
バッチをタスクで実行
お世話になります。 現在、XP端末にてバッチをタスクスケジューラにて実行してます。 3分間隔で実行しておりますが、タスクにバッチファイルを直接指定するとプロンプト画面が表示されてしまうため、バッチファイルのショートカットを作成し、タスクにはそのショートカットを指定しております。 で、今回Win7端末に当該タスクを移行するのですが、XP端末よりバッチファイル及びショートカットをコピー致しました。タスクスケジューラに登録しようとしましたが、XPと何か違います。。 XPだと『実行するファイル名』の箇所にショートカットを指定することができますが、Win7だとショートカットを指定しても、バッチファイルのパスに変わってしまいます。 例えば、c:\test.batへのショートカット.lnk を選択しても、c:\test.bat に変わります。 よって、タスクが実行されるとプロンプト画面が表示されることになります。 なお、手動でパス(c:\test.batへのショートカット.lnk)を入力し、タスクを実行すると実行結果が『指定されたファイルが見つかりません』とエラーになってしまいます。 パスを:\test.batへのショートカット としても同エラーになります。 どのようにすれば、タスクにショートカットを指定できるのでしょうか。 ご教授の程、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asciiz
- ベストアンサー率70% (6803/9674)
バッチファイルというのは、実行可能ファイル(*.exe)ではありません。 バッチファイルというのは、本来、コマンドインタプリタ(cmd.exe)の実行する、スクリプトです。 コマンドインタプリタには、いくつか起動オプションがあります。 「cmd /?」で見ることが出来ますが、その中に「/c 文字列」というオプションがあります。"文字列"を実行します、とあります。 この"文字列"で、バッチファイルを指定することが出来ます。 つまり、タスクに登録すべきコマンドは、「cmd.exe /cバッチファイル名」です。 コマンドラインから、上記を打っても、実行できるのがわかるでしょう。 ですので、これをタスクに登録する場合、タスクの作成から実行スケジュールを設定したあと、「プログラムの開始」を選択、 プログラム/スクリプト として 「C:\windows\system32\cmd.exe」 パラメータとして「/c C:\batch\test.bat」 開始(実行時のカレントディレクトリ)に「C:\batch\」 などと入力して、タスク登録を完了します。 これで、希望のバッチファイルがスケジュールに添って実行できるはずです。
- kteds
- ベストアンサー率42% (1882/4440)
> タスクが実行されるとプロンプト画面が表示されることになります。 「表示される」という意味ですが 「実行内容が表示される」ということならエコー非表示にすればいいのでは? 「実行後に残ったままになる」ということなら実行後は終了するパラメータをつければいいのでは? --- どんなコマンドプロンプトを実行しているのか、書いてないので見当がつきません. 実際のファイルを添付して質問すればいいでしょう。
お礼
早速のご回答ありがとうございます。 また、説明不足で申し訳ございません。 表示とはバッチを実行している間、デスクトップ上にプロンプト画面が出てくることです。 バッチはScriptを呼び出し、Scriptにてファイルチェック⇒判定⇒結果によりアラートメール送信を行っております。 タスクの実行間隔が3分であるため、その都度プロンプト画面が表示されるのはうざったいので、以前に調べたところ実行するバッチファイルのショートカットを作成し、そのショートカットを指定することで(タスクバーには表示されますが)バックグラウンドで実行されるという情報があり、それに従ってタスクの設定をした次第です。
補足
間違えました。バックグラウンドで実行ではなく、プロンプト画面を最小化にして実行です。 http://bez999.exblog.jp/18570968/
お礼
ご回答ありがとうございます。 早速試してみました。教えて頂いた通り設定したところ、問題無くタスクは実行されましたがやはりプロンプト画面が一瞬表示されてしまいます。 これだと、タスクに直接batファイルを指定したときと何ら変わりありません。 今回の要件としては、タスクにてバッチを実行した際にプロンプト画面を表示させない・・というものであり、XP端末と同じようにプロンプト画面を最小化にして実行させたいところです。 バッチの書き方が悪いのでしょうか。。