Windowsのバッチファイル,定期実行,画面表示させない

(確認)

メモ帳でコマンドを書き,拡張子を「.bat」にするとバッチファイルになる。

 

バッチファイルで「C:\Program Files」下のプログラムを動かそうとすると,スペースが入ってしまう関係で,そのままではうまくいかない。

パスを「"~"」で囲うと,この問題は解決できる。

例)

"C:\Program Files\Folder\program" -xx

 

バッチファイルを定期的に実行するには,タスクスケジューラを用いる。

タスクスケジューラの右の「操作」ペインの中の,「基本タスクの作成」をクリックし,後はウィザードに沿って作っていく。

1時間毎に実行したい場合は,ウィザード中は「1回限り」を選択した後,そのタスクの[プロパティ]-[トリガー]タブの,「編集」をクリックし,詳細設定の「繰り返し間隔」と「継続時間」で細かい設定を行う。

 

バッチファイルの画面を表示させないためには,VBScriptを用いる。VBScriptファイルの作り方は,テキストファイルの拡張子を「.vbs」にすれば良い。

 

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c [xxx.bat]", vbhide

 

一行目はオブジェクトの作成(というらしい),

二行目がオブジェクトの利用?(run関数を使ってバッチファイル[xxx.bat]を実行させ,かつ,画面を隠す(vhide)),と言えばいいのだろうか。

タスクスケジューラで定期実行させるファイルを,バッチファイルから,この.vbsファイルに変更すればよいのである。

 

バッチファイル名はフルパスで指定しているが,「同一フォルダの」を指定する環境変数とか,いろいろあるらしい。

 

そして,ここで書き込むフルパスに空白がある場合,動作しないっぽいのである。

結局,「Program Files」フォルダ内のプログラムを動かすバッチファイルは,スペースのないパスのフォルダに置いて,そのバッチファイルと同じフォルダに前記.vbsファイルを作成するという方法で解決している。

本当は,プログラムと同じフォルダにバッチファイルと.vbsファイルを置きたかったのだが。

 

きちんと勉強した方がよいのだろうが,せずとも他の方法で解決できるなら,とりあえず姑息的対処でなんとかするのである。ただ,姑息的対処なので応用が利かないから,きちんと書いておかないと後で困ってしまうのである。