« WSHの引数で二重引用符 " をエスケープするには? | トップページ | For Each Inループの途中脱出の判定方法 »

2007年3月 3日 (土)

環境変数のPATHを行分けして表示するバッチファイル(続々編)

バッチファイルの文字列操作例です。

@ECHO OFF
SETLOCAL
SET "PATH=%PATH:"=?%"
SET S=
:LOOP
SET "C=%PATH:~0,1%"
IF "%C%"==";" (
ECHO=%S:?="%
SET S=
) ELSE (
SET "S=%S%%C%"
)
SET "PATH=%PATH:~1%"
IF DEFINED PATH GOTO LOOP
IF DEFINED S ECHO=%S:?="%

ポイントは、
処理前に引用符を置換する。
SET "name=value" のようにエスケープする。
処理後に引用符を戻す。

ここではパス名に使えない文字 ? を使っているが、^E(\x05)のような制御文字も使えます。

« WSHの引数で二重引用符 " をエスケープするには? | トップページ | For Each Inループの途中脱出の判定方法 »