共有フォルダ上のバッチファイルのカレントパスはどこになる?
Windows 共有フォルダにバッチファイルを置いて、同じフォルダに置いてあるexeファイルを相対パス指定で実行する処理を書きました。下記のような感じです。
バッチファイルを ¥¥servername¥testdir¥test.bat とします。バッチ内では ¥¥servername¥testdir¥text.exe を実行させます。
@echo off
test.exe
それをグループポリシーのスタートアップスクリプトで実行させようとしたが、どうにも実行されません。。
で、普通にエクスプローラ上からそのバッチを実行すると、バッチ実行時のカレントパスが C:¥windows 直下になっていました。
どうやらバッチファイルは普通には UNC パスをカレントパスにできないみたいです。
よって、実行時のカレントパスがシステムフォルダとなり、相対パスで指定してた test.exe が見つからないのでエラーとなった感じです。
ただ、カレントパスを UNC パスにはできませんが、ファイルの指定には UNC パスは指定できるようです。
こんな感じです。
C:\Documents and Settings\usera>copy \\servername\testdir\test.txt \\servername\testdir\test222.txt
1 個のファイルをコピーしました。
ということで、最初問題となったバッチは exe を相対パス指定ではなく UNC パスを使った絶対パスとすることで解決しました。
余談ですが、コマンドプロンプトでUNC パスをカレントにするには、ネットワークドライブとして割り当てる必要があるようです。
そこら辺は下記が参考となります。
コマンドプロンプトで「CMD では UNC パスは現在のディレクトリとしてサポートされません。」
共有フォルダ上で,マウスだけで一発でコマンドプロンプトを開く方法 (UNCパスへのpushdをバッチクリックで済ませる) - 主に言語とシステム開発に関して