はじめに
ある日突然バッチファイルを渡されたけど、
パッと見ぜんぜんわからなかったので調べた時のメモ。
部分文字列の取得
コマンド
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
おわりに
何も知らないとほんとにわかんなかったけど、調べてみれば以外に単純。