はじめに
ある日突然バッチファイルを渡されたけど、
パッと見ぜんぜんわからなかったので調べた時のメモ。
部分文字列の取得
コマンド
set FILE=C:\hogehoge.txt
if exist "%FILE%" move "%FILE%" "%FILE:~,-3%bak"
解説 : ~,-3って何だ?
結論から言えば、部分文字列を取得してhogehoge.txtをhogehoge.bakにしてるだけだった。
(hogehoge.txtの最初の文字から、最後から3文字分除いた文字列にbakをくっつけている)
以下に書式と、出力した場合の結果をまとめてみた。
お気に入りのものを見つけてほしい。
-
%FILE%- 変数全体の値を取得C:\>echo %FILE% hogehoge.txt -
%FILE:~m%- 変数のm文字目後から、最後までの文字列C:\>echo %FILE:~3% ehoge.txt -
%FILE:~m,n%- 変数のm文字目後から、n文字分の文字列C:\>echo %FILE:~3,4% ehog -
%FILE:~m,-n%- 変数のm文字目後から、最後からn文字分除いた文字列C:\>echo %FILE:~3,-3% ehoge. -
%FILE:~,n%- 変数の最初から、n文字分の文字列C:\>echo %FILE:~,3% hog -
%FILE:~,-n%- 変数の最初から、n文字分除いた文字列C:\>echo %FILE:~,3% hogehoge. -
%FILE:~-m%- 変数の後ろm文字分目から、最後までの文字列C:\>echo %FILE:~-3% txt -
%FILE:~-m,n%- 変数の後ろm文字目から、n文字分までの文字列C:\>echo %FILE:~-3,2% tx -
%FILE:~-m,-n%- 変数の後ろm文字目から、最後からn文字分除いた文字列C:\>echo %FILE:~-3,-2% t -
%FILE:~-m,-n%- 変数の後ろm文字目から、最後からn文字分除いた文字列C:\>echo %FILE:~-3,-2% t -
echo %FILE:t1=t2%- 変数内の文字t1を、文字t2に置換C:\>echo %FILE:ho=fu% fugefuge.txt
おわりに
何も知らないとほんとにわかんなかったけど、調べてみれば以外に単純。