« コマンド引数を別のバッチファイルへ渡すとき | トップページ | ディスプレイの外にあるウインドウを移動 »

2018年4月14日 (土)

ネットワークボリューム上のファイルをバッチファイルで操作

ローカルディスク上のファイルをバッチファイルで操作する時、大抵はバッチファイルでコマンドにフルパスで引数を与えて済ますのだが、
%~d1
cd "%~p1"
として目的のディレクトリに移動して操作することもある。

ネットワークボリューム上のファイルを操作する時は、上の書き方では動作しないので次のように変更した。
pushd "%~dp1"
目的の処理
popd

このように書いておくとローカルディスク上のファイルでも問題なく動作する。UNCに対してドライブレターの取出し %~1 は \\ を返す。コマンドプロンプト(バッチファイル)ではドライブレターでは無い文字列に対してカレントドライブは変更できないが、pushdコマンドを使えばローカルのパスでもネットワークパスでもカレントドライブ・カレントディレクトリにできる。
この時、ネットワークボリュームはドライブレターを自動的に割り当てられている。

元々pushdは引き数のパスに次々にカレントディレクトリを変更し、その変更履歴をスタックに積んで保持している。popdでスタックを逆にたどってカレントディレクトリを戻していくことができる。

ネットワーク上のパスはpushdでドライブレターが与えられるが、popdで与えたドライブレターが解除される。

|

« コマンド引数を別のバッチファイルへ渡すとき | トップページ | ディスプレイの外にあるウインドウを移動 »

Windows」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: ネットワークボリューム上のファイルをバッチファイルで操作:

« コマンド引数を別のバッチファイルへ渡すとき | トップページ | ディスプレイの外にあるウインドウを移動 »