共有フォルダ上に配置するバッチファイルから、相対パス指定で同じフォルダにあるexeを呼び出す処理が必要になりました。
で、バッチファイルに当初下記のように書いていました。
cd %~dp0
test.exe
pause
そうすると下記のようにUNCパスは使えないって怒られます。
CMD では UNC パスは現在のディレクトリとしてサポートされません。
で、調べた結果初めて知ったんですが、Windowsには pushd というコマンドもあるようです。
pushd コマンドは cd コマンドと同じようにカレントフォルダを移動するコマンドなんですが、違いはスタックでカレントフォルダの履歴を残すことです。そして、popd コマンドでひとつ前のフォルダに移動することができます。
これは非常に便利ですね。
この pushd コマンドですが、もう一つうれしい機能があり、それは UNC をカレントディレクトリにしようとすると適当な空きドライブに対して、ネットワークドライブを設定し、そのドライブに移動してカレントフォルダを指定してくれるようです。
つまり、UNCパスが使えるということですね。
ということで共有フォルダ上のバッチファイルを下記のように変更すればうまくいきました。
pushd %~dp0
test.exe
pause
参考: