6. Windows - バッチ - 部分文字列の取得

 
6.1 部分文字列の取得
6.2 FOR 文の部分文字列の取得

6.1 部分文字列の取得

 文字列の変数は以下のように部分文字列を収集したり変更したりできるようです。  変数名を A として
書式 意味
%A% 文字列全体
%A:~m% m 文字目から最後まで
%A:~m,n% m 文字目から n 文字分
%A:~m,-n% m 文字目から末尾の n 文字分を削除
%A:~-m% 末尾の m 文字目から最後まで
%A:~-m,n% 末尾の m 文字目から n 文字分
%A:~-m,-n% 末尾の m 文字目から末尾の n 文字分を削除
%A:a=b% 文字列 a を文字列 b に変更
 「~」はチルダです。  「m」「n」は数字で、開始点の「m」は「0」始まりです。  以下のバッチファイルを作成して

@ECHO OFF

SET A=ABCDEFGHIJ

ECHO %A%
ECHO %A:~4%
ECHO %A:~1,3%
ECHO %A:~1,-4%
ECHO %A:~-4%
ECHO %A:~-5,3%
ECHO %A:~-5,-4%
ECHO %A:HIJ=XYZ%
 実行すると以下の結果が得られます。

ABCDEFGHIJ
EFGHIJ
BCD
BCDEF
GHIJ
FGH
F
ABCDEFGXYZ

6.2 FOR 文の部分文字列の取得

 話は前後しますが、FOR 文で使う変数、例えば %%A の部分文字列を取得する場合は、%%A をうまく編集できないので、別の変数に入れて編集するしかないようです。  以下を実行すると、ファイル名のテキストファイルの空白行を除く、各行の先頭1文字を出力します。

SETLOCAL ENABLEDELAYEDEXPANSION		←	変数の代入をただちに実行するおまじない

FOR /F %%A IN (ファイル名) DO (
    SET B=%%A
    ECHO !B:~0,1!
)