2022年5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« %~sIの短いファイル名が変ですね。(障害) | トップページ | FOR /F の eol について »

2008年2月18日 (月)

テンポラリファイルの代わりに環境変数を使う。

もし、テキストファイルの中身をひとまとめにして環境変数にセットし、各行にばらして取り出すことができれば、テンポラリファイルの代わりになります。

ポイントの第一は、
改行文字の扱いは難しいので、代わりにDEL文字を使います。
DEL文字はメモ帳でCtrl+BSキーかAlt+テンキーの0127で入ります。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET Z=
FOR /F "delims=" %%I IN ('dir /b ^|find /n /v ""') DO SET Z=!Z!%%I

:LOOP
FOR /F "delims= tokens=1*" %%I IN ("!Z!") DO (
SET L=%%I
FOR /F "delims=[]" %%K IN ("%%I") DO ECHO=%%K !L:*]=!
SET Z=%%J
)
IF DEFINED Z GOTO :LOOP

他のポイントは、
遅延展開
空行認識と行番号付加のために、find /n /v ""
1行取り出しは、FOR /F "delims= tokens=1*"
行番号取り出しは、FOR /F "delims=[]"
行番号除去は、!L:*]=!
終端判定は、IF DEFINED Z

各ポイントには、それぞれ理由があります。

« %~sIの短いファイル名が変ですね。(障害) | トップページ | FOR /F の eol について »