共有フォルダ上のバッチファイルのカレントパスはどこになる?
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をバッチクリックで済ませる) - 主に言語とシステム開発に関して
[PR]
by jehoshaphat | 2010-05-12 23:52 | 豆知識 | Trackback | Comments(0)
トラックバックURL : http://jehupc.exblog.jp/tb/12631685
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。


<< グループポリシーのスタートアッ... (.Net)DataGridV... >>