目次
文字列を自在に切り取る
文字列を切り取るには、以下のようなコマンドを用います。
1 |
%[文字列の入った変数]:~[数字1],[数字2]% |
文字列を切り取るには、まず切り取りたい文字列を一度変数に代入する必要があります。変数への代入は「set」コマンドを使用します。詳しくは「set (変数の設定・計算・ユーザかたの入力情報の取得)」を参照して下さい。切り取りたい文字列を変数に入れたらその変数を上のコマンドの[文字列の入った変数]に入れましょう。
[数字1]には除きたい文字数を指定します。例えば4文字目から切り取りたかったら、「3」を入れて初めの3文字を除きます。次に[数字2]には切り取りたい文字数を入れます。例えば4文字分切り取りたいときは、「4」を入れます。
では、ここまでをバッチファイルにしてみましょう。ここでは、「123456789」という文字列を変数「string」に入れてみます。そして、この文字列の初め3文字を除いて4文字目から4文字分を切り取ります。バッチファイル「string_kiritori.bat」の内容を以下に示します。
1 2 3 4 5 6 7 |
@echo off rem 変数「string」に文字列を代入 set string=123456789 rem 4文字目から4文字分を切り取って、「echo」コマンドで表示 echo %string:~3,4% |
以下、実行結果です。
次に、[数字1]の部分にマイナス(負)の値を入れたらどうでしょう。この場合は文字数を後ろから数えた位置から切り取りを行います。
例えば、[数字1]の部分に「-5」を入れて、「%string:~-5,4%」とすれば後ろから数えて5文字目から4文字分を切り取ります。以下、確認のバッチファイル「string_kiritori_minus.bat」です。
1 2 3 4 5 6 7 |
@echo off rem 変数「string」に文字列を代入 set string=123456789 rem 後ろから数えて5文字目から4文字分を切り取って、「echo」コマンドで表示 echo %string:~-5,4% |
以下、実行結果です。
文字列「123456789」を後ろから数えて5文字目は「5」ですので、そこから4文字分が切り取られています。
[数字2]の部分を負にすることもできます。この場合は[数字2]で指定した文字数を後ろから除きます。
例えば、[数字2]に負の値「-2」を指定して、「%string:~3,-2%」とした場合は文字列「string」の初め3文字目を除いた文字列から後ろの2文字を除いた文字列を切り取ります。以下、バッチファイルの例「string_kiritori_minus2.bat」です。
1 2 3 4 5 6 7 |
@echo off rem 変数「string」に文字列を代入 set string=123456789 rem 初めの3文字目を除いた文字列から後ろ2文字分を除いて、「echo」コマンドで表示 echo %string:~3,-2% |
以下、実行結果です。
[数字2]に負の値「-2」を設定したことで、後ろの「89」が除かれています。
これに、[数字1]も負にすれば、後ろから数えた文字列以降に対して、[数字2]で指定した後ろからの文字数を除いて切り取りできます。
例えば、「%string:~-3,-2%」などと指定すれば、後ろから3文字目以降を最後の2文字を除いて表示できます。以下は、確認のバッチファイル「string_kiritori_double_minus.bat」です。
1 2 3 4 5 6 7 |
@echo off rem 変数「string」に文字列を代入 set string=123456789 rem 後ろから3文字目以降を最後の2文字を除いて表示 echo %string:~-3,-2% |
以下実行結果です。
文字列「123456789」の後ろから3文字は「789」であり、これの最後2文字を除いて「7」となっています。
補足ですが、文字列「123456789」に対して、「%string:~7,5%」などと指定するとどうでしょう。前から7文字を除いた文字列は「89」ですが、切り取る文字数は5文字であり文字数が足りません。
このような場合は、文字があるところまでを表示するようです。つまり、「89」が表示されます。以下、確認のバッチファイル「string_kiritori_over.bat」です。
1 2 3 4 5 6 7 |
@echo off rem 変数「string」に文字列を代入 set string=123456789 rem 7文字目以降の5文字分を切り取り echo %string:~7,5% |
以下、実行結果です。
まとめバッチファイル
以下に、前節の文字列の切り取り方をまとめたバッチファイル「string_kiritori_summary.bat」を示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
@echo off echo 文字列は「123456789」 set string=123456789 echo; echo 4文字目から4文字分を切り取って、「echo」コマンドで表示 echo %string:~3,4% echo; echo 後ろから数えて5文字目から4文字分を切り取って、「echo」コマンドで表示 echo %string:~-5,4% echo; echo 初めの3文字目を除いた文字列から後ろ2文字分を除いて、「echo」コマンドで表示 echo %string:~3,-2% echo; echo 後ろから3文字目以降を最後の2文字を除いて表示 echo %string:~-3,-2% echo; echo 7文字目以降の5文字分を切り取り echo %string:~7,5% |
以下、実行結果です。