BATファイルで部分文字列を得る - LEFT
これは、コマンドプロンプト(cmd.exe) Advent Calendar 2015 - Qiitaの9日目の記事です。
※Windows 10 Home 64bit 搭載のcmd.exeにて検証を行っています。
BATファイルを使って、VBのLEFT関数みたいなコマンドを作成します。
LEFT.bat
@set str=%~1 @set /a length=%~2 @call echo %%str:~0,%length%%%
さて、実行してみましょう。
C:\Users\kunst\Desktop>left hoge 2 ho C:\Users\kunst\Desktop>left hoge 3 hog C:\Users\kunst\Desktop>left hoge 6 hoge C:\Users\kunst\Desktop>left hoge -1 hog
こんな感じっすね!
set /?の際(コマンドプロンプトで読んでおくべき7つのHELP - その⑤「set /?」 - くんすとの備忘録)に取り上げた、部分文字列の抜き出しを行っています。
call echo
@call echo %%str:~0,%length%%%
の部分ですが、コマンドラインを2回展開しています。
callで「echo %%str:~0,%length%%%」を呼び出した際に「%length%」が変数の値に、「%%」が「%」に展開されます。
展開後の「echo %str:~2%」が実際に実行され、部分文字列が出力されます。