文字列(String)





長さ(length)


DESC 関数などで調べる方法はない 部分文字を抽出して調べる
set x=12345678 set y=%x:~8% if defined y echo 9文字以上 set x=12345678 set y=%x:~8% if defined y echo 9文字以上 set z=%x:~7% if defined z echo 8文字以上 if defined z if not defined y echo 8文字



置換(replace)


set V=aaa :: bbb echo %V:a=b% :: abc echo %V:aaa=abc%
コマンドがないため for で対応をする
:: 変換したい文字列をセット set src=d:\foo\bar echo %src% em 置換する文字 set search=\ :: 置換後の文字 set replace=/ :: 変数初期化 set dst= set tmp= :loop if "%src%" == "" goto :end for /f "tokens=1* delims=%search%" %%A in ("%src%") do (   set dst=%dst%%tmp%%%A   set src=%%B   set tmp=%replace% ) goto :loop :end echo %dst%



抽出


SYNTAX %var:~OFFSET,LENGTH%
:: 0 番目 から 2 つ :: ai set var=aiueo echo %var:~0,2% :: 後ろから 4 つ目より後 :: .txt set var=foo.txt echo %var:~-4% :: 後ろから 4 つを消す :: foo set var=foo.txt echo %var:~0,-4% :: 2 番目から後ろ :: ueo set var=aiueo echo %var:~2% :: Argument の展開は失敗する :: 別変数にセットしてからする :: BAD set pathbody=%1:~0,-4% :: OK tmp=%1 set ret=%tmp:~0,-4%



結合(concat)


結合は 展開の結果をそのまま使う
set a=kato set b=taka echo %a%%b%