Windows Vistaのタスクスケジューラーでバックアップのバッチファイルを実行しようとしてハマったので備忘録です。
Taskschd.mscと入力でも起動します
これは私のハマったところです。
これは、作業ディレクトリを指定していないからです。
タスクのプロパティの「操作」タブ、「操作の編集」にて、
「開始(オプション)(T)」に作業ディレクトリを入力しておけばOKです。
実はヘルプに書いてあります。(しかし「開始」じゃわからんw)
以下ヘルプより引用
[開始 (オプション)] ボックスには、プログラムまたはスクリプトを実行するコマンド ラインの作業ディレクトリを指定できます。プログラムまたはスクリプト ファイルへのパス、あるいは実行可能ファイルによって使用されるファイルへのパスを指定してください。
↑「開始(オプション)(T)」の設定でもいいのですが、
ようするに、作業ディレクトリを設定してやればいいわけですよね…。
…バッチファイルだけでもできるはず!
と思ったので例を書いてみました。
cd /D %~dp0 : (後はいつもどおりに書いてください) :
"cd /D"でドライブごと作業ディレクトリ(カレントディレクトリ)を移動する。%~dp0 はバッチファイルで"実行したバッチファイルのディレクトリを得る"ことができます。
つまり、
cd /D %~dp0
と書くと、バッチファイルの置いてあるディレクトリに作業ディレクトリを移動して実行することができるはずです。
多分これでいいはず。ダメだったらダメ出しして下さい。
この辺のバッチファイルの特殊変数は、こちらのサイトが詳しいです。一度目を通しておくとよいです。あとこのwikiのバッチファイルのところも。
WSHとかJScriptでも似たようなことはできると思います。
ぜひチャレンジを!(すげー人任せ
これはバッチファイルやバッチから起動されたソフトが裏(バックグラウンド)で動いているためです。
表で動かしてUIを表示させるには、
プロパティの全般タブの「セキュリティオプション」にて、
「ユーザーがログオンしているときのみ実行する(R)」をチェックします。
これでOK。
わかりにくいのですが、これもヘルプに書いてあります。
以下ヘルプより引用
スケジュールされたタスクを実行するアカウントが、タスクがトリガされた時点でログオンしていない場合でもタスクを実行するように指定することができます。そのためには、[ユーザーがログオンしているかどうかにかかわらず実行する] をクリックします。このオプションが選択されている場合、タスクは対話的に実行されません。タスクを対話的に実行させるようにするには、[ユーザーがログオンしているときのみ実行する] をクリックします。
Show recent 10 comments. Go to the comment page.