バッチファイルを使っている際に文字列を扱うことがありますが、その文字列を自由自在に切り取る方法を紹介したいと思います。
最初に、すぐに要点を確認できるように簡単なまとめを、後半に例を交えて詳しく説明を行いましたので、必要に応じて確認してみてください。
右側の列は、変数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」と全ての文字が表示されます。
文字列を途中から末尾まで表示する場合には、ある文字列Sに対して「%S:~x%」を使えばOKです。このとき、x+1文字目から最後までの文字が切り出されます。
以下を実行すると「DEFGHIJ」と3+1=4文字目から最後までが表示されます。
文字列を最初から途中まで表示する場合には、ある文字列Sに対して「%S:~0,y%」を使えばOKです。このとき、1文字目からy文字分切り取られます。
以下を実行すると「ABCDE」と最初から5文字目までが表示されます。
文字列の中央を切り取る場合には、ある文字列Sに対して「%S:~x,y%」を使えばOKです。このとき、x+1文字目からy文字分の文字が切り出されます。
以下を実行すると「DEF」と3+1=4文字目から3文字分、つまり4文字目から6文字目までが表示されます。