バッチファイルを使っている際に文字列を扱うことがありますが、その文字列を自由自在に切り取る方法を紹介したいと思います。
最初に、すぐに要点を確認できるように簡単なまとめを、後半に例を交えて詳しく説明を行いましたので、必要に応じて確認してみてください。
簡単なまとめ(文字列の切り出し)
右側の列は、変数Sに文字列”ABCDEFGHIJ”が格納されているときに、当該書式を実行した場合の例を示しています。
書式 | 意味 | 例 |
%S% | 文字列Sの値全体 | 「%S%」 →「ABCDEFGHIJ」 |
%S:~x% | (x+1)文字目から末尾まで切り出し | 「%S:~3%」 →「DEFGHIJ」 |
%S:~x,y% | (x+1)文字目からy文字分切り出し | 「%S:~3,3%」 →「DEF」 |
%S:~x,-y% | (x+1)文字目から末尾までのうち、最後のy文字を消去 | 「%S:~3,-3%」 →「DEFG」 |
%S:~-x% | 後ろからx文字目をスタートにして、末尾まで切り出し | 「%S:~-4%」 →「GHIJ」 |
%S:~-x,y% | 後ろからx文字目をスタートにして、y文字分切り出し | 「%S:~-4,3%」 →「GHI」 |
%S:~-x,-y% | 後ろからx文字目をスタートにして、最後のy文字を消去 | 「%S:~-4,-3%」 →「G」 |
詳細
以下では、実際に実行する可能性のある4つのパターンに場合分けして、文字列の切り出し方を紹介します。紹介するパターンは以下の四つです。
- 文字列全体を表示(切り出さない)
- 文字列の途中から末尾まで切り出す
- 文字列の最初から途中まで切り出す
- 文字列の〇文字目から×文字目まで切り出す
① 文字列全体を表示する
文字列全体を表示する場合には、変数を%で囲めばOKです。以下を実行すると「ABCDEFGHIJ」と全ての文字が表示されます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET S=ABCDEFGHIJ
echo %S%
② 文字列の途中から末尾まで切り出す
文字列を途中から末尾まで表示する場合には、ある文字列Sに対して「%S:~x%」を使えばOKです。このとき、x+1文字目から最後までの文字が切り出されます。
以下を実行すると「DEFGHIJ」と3+1=4文字目から最後までが表示されます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET S=ABCDEFGHIJ
echo %S:~3%
③ 文字列の最初から途中まで切り出す
文字列を最初から途中まで表示する場合には、ある文字列Sに対して「%S:~0,y%」を使えばOKです。このとき、1文字目からy文字分切り取られます。
以下を実行すると「ABCDE」と最初から5文字目までが表示されます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET S=ABCDEFGHIJ
echo %S:~0,5%
④ 文字列の〇文字目から×文字目まで切り出す
文字列の中央を切り取る場合には、ある文字列Sに対して「%S:~x,y%」を使えばOKです。このとき、x+1文字目からy文字分の文字が切り出されます。
以下を実行すると「DEF」と3+1=4文字目から3文字分、つまり4文字目から6文字目までが表示されます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET S=ABCDEFGHIJ
echo %S:~3,3%