通常 バッチファイルなどで他のプログラムを呼び出すには
callコマンドを使う
例としては
起動させる対象のプログラムfuga.exeと、それを呼び出すバッチhoge.cmdを同じフォルダに入れておき
call fuga.exe
などとやっていて、処理がストップすると、バッチファイルはそこでストップする。
ならば、「startにやらせよう」とすると、「startにはフルパスを入れてやらないとダメ」あるいは 「start /dに作業ディレクトリを指定してやらんとダメ」
てなわけで「fuga.exe と hoge.cmd をセットで どこのディレクトリに持って行っても
(手直しなしで)きちんと動くように」というのはできないか? という相談であるが。
結論から言うとhoge.cmdは次のように書き換えればよろしい
start /d %~dp0 fuga.exe
さて、上記の start /d に作業ディレクトリを指定する部分で、呼び出し元(つまり自分自身)の存在するディレクトリを指定してやれば、似たような作業になる。
※手直しなしでっていう部分ですな
んで 作業ディレクトリに自分自身のパスを与えてやれば良い(いつでも)
バッチファイル内では、変数%0に自分自身のフルパスが格納されている。
また、コレにはいくつかオプションがあって
| 変数 | 内容 |
|---|---|
| %~d0 | ドライブ名を取得 |
| %~p0 | パス名を取得(作業ディレクトリのみ ドライブ名なし) |
| %~n0 | ファイル名のみ取得(拡張子なし ←これ意味あるのかな?) |
| %~x0 | ファイルの拡張子を取得(フルパスの最後の.以降) |
| %~s0 | MS-DOSの8.3形式でフルパスを取得 |
| これらは複数組み合わせが可能 | |
従ってドライブ名+パスは%~d0%~p0でも良いが%~dp0でok
|
|
| 別ブログに掲載していた記事をQiitaに掲載 |