- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Windows/Vista

はじめに Edit

Windows Vistaのタスクスケジューラーでバックアップのバッチファイルを実行しようとしてハマったので備忘録です。

注意点 Edit

タスクスケジューラーの場所 Edit

  • スタートメニュー→管理ツール→タスクスケジューラ
    にあります。
  • もしくは、Winキー+R→「ファイル名を指定して実行」から、
    Taskschd.msc
    
    と入力でも起動します

バッチファイルが動かない!のをなんとかする方法 Edit

これは私のハマったところです。

これは、作業ディレクトリを指定していないからです。
タスクのプロパティの「操作」タブ、「操作の編集」にて、
「開始(オプション)(T)」に作業ディレクトリを入力しておけばOKです。

実はヘルプに書いてあります。(しかし「開始」じゃわからんw)
以下ヘルプより引用

[開始 (オプション)] ボックスには、プログラムまたはスクリプトを実行するコマンド ラインの作業ディレクトリを指定できます。プログラムまたはスクリプト ファイルへのパス、あるいは実行可能ファイルによって使用されるファイルへのパスを指定してください。

もう1つの多分バッチファイルが動かない!のをなんとかする方法 Edit

↑「開始(オプション)(T)」の設定でもいいのですが、
ようするに、作業ディレクトリを設定してやればいいわけですよね…。

…バッチファイルだけでもできるはず!
と思ったので例を書いてみました。

cd /D %~dp0

 : (後はいつもどおりに書いてください)
 :

"cd /D"でドライブごと作業ディレクトリ(カレントディレクトリ)を移動する。%~dp0 はバッチファイルで"実行したバッチファイルのディレクトリを得る"ことができます。

つまり、

cd /D %~dp0

と書くと、バッチファイルの置いてあるディレクトリに作業ディレクトリを移動して実行することができるはずです。

多分これでいいはず。ダメだったらダメ出しして下さい。

この辺のバッチファイルの特殊変数は、こちらのサイトが詳しいです。一度目を通しておくとよいです。あとこのwikiのバッチファイルのところも。

WSHとかJScriptでも似たようなことはできると思います。
ぜひチャレンジを!(すげー人任せ

実行時にバッチファイルのウインドウなどが表示されない Edit

これはバッチファイルやバッチから起動されたソフトが裏(バックグラウンド)で動いているためです。

表で動かしてUIを表示させるには、
プロパティの全般タブの「セキュリティオプション」にて、
「ユーザーがログオンしているときのみ実行する(R)」をチェックします。
これでOK。

わかりにくいのですが、これもヘルプに書いてあります。
以下ヘルプより引用

スケジュールされたタスクを実行するアカウントが、タスクがトリガされた時点でログオンしていない場合でもタスクを実行するように指定することができます。そのためには、[ユーザーがログオンしているかどうかにかかわらず実行する] をクリックします。このオプションが選択されている場合、タスクは対話的に実行されません。タスクを対話的に実行させるようにするには、[ユーザーがログオンしているときのみ実行する] をクリックします。


Show recent 10 comments. Go to the comment page.

  • バッチファイルが動かない!のをなんとかする方法を参考にさせていただきましたが実行せず。 教えてください。
    os : Windows.Server2008 Standard
               操作の編集 プログラム/スクリプト "c:windows\sytem32\shutdown.exe"
               引数の追加(オプション)(A)  "-s -t 60 -f"
               開始(オプション)(T)  c:windows\system32
    としました。
    全般 ユーザーがログオンしているかどうかにかかわらず実行する。をチェック
    履歴をみると "インスタンスを正常に完了しました" と表示されているのですが、シャットダウンできません。
     作業ディレクトリを入力の仕方が悪いでしょうか? -- 悩むflag? 2012-01-12 (Thu) 17:20:56
    • c:\windows\system32 -- 2012-01-14 (Sat) 00:04:49
    • すいません入力ミスありました。これで実行しました。
       操作の編集 プログラム/スクリプト "c:\windows\sytem32\shutdown.exe" 
       引数の追加(オプション)(A)  "-s -t 60 -f"
       開始(オプション)(T)  c:\windows\system32
      -- [[悩むflag]] &new{2012-01-17 (Thu) 15:44:00};
  • "cd"では作業ディレクトリが切り替わらないので"タスクスケジューラ cd"で検索してここにたどり着きました -- 2012-04-22 (Sun) 18:40:23
  • ぐぐってヒットしたのがここだった。サンキュー。 -- toyman? 2012-06-05 (Tue) 23:41:47
  • バッチファイルの実行に関して、質問させてください。
    現在作成したバッチファイルをWindows7上でうまく動きます(コマンドプロプトン、ダブルクリック、スケジューラ)が、windows 2008R2(AD機能)で起動しないです。コマンドプロプトンで【test.bat】Enterキー押すと”操作可能なプログラムまたはバッチ ファイルとして認識されていません”というメッセージが出ます。環境変数のPATHTEXTに".BAT"の記述はあります。スケジューラで実行されるみたいですが、リターンコードは1で、バッチファイルの内容は実行されていないようです。ダブルクリックしても、ほしい結果がでません。結構困っています。解決方法があれば、ご教授ください。 -- monster? 2012-06-07 (Thu) 10:48:44
    • Windows serverとAD機能の固有の問題についてはわからないのと、業務で使いたいのであれば、Microsoftのサポートに問い合わせるか、technetのフォーラムなりで聞かれるのがよいかなーと思います。 http://social.technet.microsoft.com/Forums/ja-jp/category/windowsserver
      それを踏まえたうえで…
      環境の違いがわからないので「PATHが通ってない」かもといった無難なことは助言できます。
      この記事を書いたVistaのころは「UACでコマンドプロンプトを開いて、実行しようとすると作業ディレクトリが変わるため初見はコマンドがないように見える」といった問題がありました。似たようなことがあるかも知れません。
      (この記事の内容だと cd /D %~dp0 で対処できるかな?パスに空白が含まれるとそのままだと動かないかも) -- anonymous? 2012-06-08 (Fri) 16:46:08
  • とても助かりました。ありがとうございます -- taddy? 2012-10-30 (Tue) 12:25:03
    • >「開始(オプション)(T)」助かりました!オプションで書いてあるのに!w -- 2014-08-02 (Sat) 10:58:17
  • 助かりました。ありがとうございました。 -- 2013-02-05 (Tue) 10:55:07
  • タスクエラーがでて困ってたところにこちらにたどり着きました。作業ディレクトリを入れたらバッチリ動きました。ありがとうございます! -- 通りすがり? 2013-02-15 (Fri) 17:30:34
  • >「開始(オプション)(T)」に作業ディレクトリを入力しておけばOKです。

自分もこれでした・・・。
めっちゃ助かりました!
ありがとうございます! -- みすた? 2013-03-06 (Wed) 09:21:14

  • xp機の更新で困ってここへたどり着きました。
    助かりました。ありがとうございました。 -- つや? 2014-04-15 (Tue) 20:24:13
  • 助かります。 -- ヤマヤタケシ? 2015-02-18 (Wed) 14:02:33
Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2010-06-01 Tue 23:46:18 JST (3335d)