バッチスクリプト - 文字列

バッチスクリプトにおける文字列の紹介

こんにちは、将来のプログラマーさんたち!今日は、バッチスクリプトの素晴らしい世界、特に文字列について深く掘り下げます。あなたの近所の親切なコンピュータ先生として、この旅を案内するのを楽しみにしています。コードを書いたことがない方も心配しないでください。私たちは最初から始めます!

Batch Script - Strings

簡単に言えば、文字列とは文字の連なりです。単語、文、または全文節など、さまざまな形があります。バッチスクリプトでは、メッセージの表示、情報の保存、テキストの操作などに頻繁に文字列を使用します。

基本的な文字列操作

文字列の表示

まずは最も基本的な操作、文字列の表示から始めましょう。バッチでは echo コマンドを使用します。

@echo off
echo Hello, World!
pause

これを hello.bat として保存し実行すると、「Hello, World!」が画面に表示されます。先頭の @echo off はスクリプト出力をきれいに保つための良い習慣で、最後の pause はウィンドウを開いたままにして結果を見られるようにします。

変数に文字列を保存

次に、文字列を変数に保存してみましょう。

@echo off
set message=Hello, Batch scripting!
echo %message%
pause

ここでは set コマンドを使用して文字列を message という変数に保存し、 %message% でその変数を使用します。

文字列の結合

文字列を結合する(連結)は一般的な操作です。バッチでは、文字列を並べるだけで簡単にできます。

@echo off
set firstName=John
set lastName=Doe
set fullName=%firstName% %lastName%
echo Full name: %fullName%
pause

このスクリプトは「Full name: John Doe」と出力します。 %firstName%%lastName% の間にスペースを追加して区切っています。

ユーザー入力との連携

スクリプトをインタラクティブにするために、ユーザーからの入力を受け取ります。

@echo off
set /p name=What's your name?
echo Nice to meet you, %name%!
pause

/p スイッチと set コマンドを使用してユーザーに質問をします。このスクリプトを実行してあなたの名前を入力してみてください!

文字列の操作

文字列の抽出

バッチでは %variable:~start,length% のシンタックスを使用して文字列の一部を抽出できます。

@echo off
set message=Hello, World!
echo %message:~0,5%
echo %message:~7,5%
pause

これは以下の出力を示します:

Hello
World

最初の echo は位置 0 から 5 文字を抽出し、二番目は位置 7 から 5 文字を抽出します。

文字列の置換

文字列の一部を置換することもできます。

@echo off
set phrase=The quick brown fox jumps over the lazy dog
echo %phrase:fox=cat%
pause

これは「fox」を「cat」に置換します。

高度な文字列操作

文字列の長さ

バッチには文字列の長さを取得する内蔵関数がありませんが、賢い回避策を使用できます。

@echo off
set string=Hello, World!
call :strLen string strlen
echo The length of "%string%" is %strlen%
pause
goto :eof

:strLen
setlocal enabledelayedexpansion
set "s=!%~1!"
set "len=0"
for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!s:~%%N,1!" neq "" (
set /a "len+=%%N"
set "s=!s:~%%N!"
)
)
endlocal & set %~2=%len%
goto :eof

このスクリプトは :strLen ファンクションを定義し、文字列の長さを計算します。

大文字・小文字の変換

バッチには大文字や小文字に変換する内蔵関数がありませんが、for コマンドと /L オプションを使用して達成できます。

@echo off
set string=Hello, World!
call :toUpper string result
echo Upper case: %result%
call :toLower string result
echo Lower case: %result%
pause
goto :eof

:toUpper
for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set %2=%%%2:%%a=%%a%%%
goto :eof

:toLower
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set %2=%%%2:%%A=%%a%%%
goto :eof

このスクリプトは :toUpper:toLower のふたつのファンクションを定義し、大文字や小文字に変換します。

結論

おめでとうございます!あなたはバッチスクリプトにおける文字列操作の初歩を踏み出しました。練習することが完璧を手に入れる鍵ですので、これらの概念を試してみてください。今日学んだ技術を組み合わせて、あなた独自のスクリプトを作成してみてください。

最後に、今日カバーした文字列操作をまとめた表を以下に示します:

操作 シンタックス
文字列の表示 echo string echo Hello, World!
文字列を変数に保存 set variable=string set message=Hello
文字列の結合 set result=%string1% %string2% set fullName=%firstName% %lastName%
ユーザー入力 set /p variable=prompt set /p name=What's your name?
文字列の抽出 %variable:~start,length% %message:~0,5%
文字列の置換 %variable:old=new% %phrase:fox=cat%

codingを続け、学び続け、そして最も重要なのは、バッチスクリプトを楽しむことです!

Credits: Image by storyset