ネットワークドライブでのバッチファイルの実行

ネットワークドライブ上にあるディレクトリ内でバッチファイルと実行すると、

「このディレクトリはUNCなので、わし(CMD.EXE)はそげなものは扱えんので、Windowsの既定ディレクトリに勝手にcdして続きを実行するぞ。」

とかほざく。その結果、ネットワークドライブ上で処理したかったファイルが見つからないので、そのバッチファイルはエラーになってしまうのでした。

これを、動くようにする。

バッチファイル先頭で、

pushd %~dp0

を実行するとよい。

種明かし。

pushdは、カレントディレクトリを引数で指定されたものに変更するコマンド。

%0には、実行されたコマンドの名前をフルパスで入っている。

%~dとか%~pは、バッチファイルへ与えられた引数に対する修飾子であり、dやpは、ドライブ名もしくはパス名を取り出すの意味。

ということで、pushd %~dp0によって、バッチファイルが実行されたネットワーク上のディレクトリへ移動することができたので、めでたく実行できることになりましたとさ。