くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

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%」が実際に実行され、部分文字列が出力されます。