Categories: Windows

bat(バッチファイル)で文字列を部分的に切り出す方法の紹介

バッチファイルを使っている際に文字列を扱うことがありますが、その文字列を自由自在に切り取る方法を紹介したいと思います。

最初に、すぐに要点を確認できるように簡単なまとめを、後半に例を交えて詳しく説明を行いましたので、必要に応じて確認してみてください。

簡単なまとめ(文字列の切り出し)

右側の列は、変数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つのパターンに場合分けして、文字列の切り出し方を紹介します。紹介するパターンは以下の四つです。

  1. 文字列全体を表示(切り出さない)
  2. 文字列の途中から末尾まで切り出す
  3. 文字列の最初から途中まで切り出す
  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文字目までが表示されます。

Haruoka