バッチスクリプト - 配列:初めての人向けガイド
こんにちは、未来のプログラマーたち!今日は、バッチスクリプティングのエキサイティングな世界、配列について潜り込んでみましょう。これまで一行もコードを書いたことがない人も心配しないでください。この旅におけるあなたの親切なガイドとして、私はここにいます。このチュートリアルの終わりまでに、プロのように配列を操作できるようになるでしょう!
配列とは?
まず、配列とは何かを理解しましょう。あなたが crayon(クレヨン)の箱を持っているとします。それぞれのクレヨンは異なる色ですが、全部が一つの箱に収納されています。配列はその箱のようなものです。複数のアイテム(要素と呼びます)を保持できるコンテナです。
配列の作成
バッチスクリプティングでは、配列の作成は簡単です。set
コマンドを使用して配列を定義します。まずは果物の配列を作ってみましょう!
@echo off
set fruits[0]=りんご
set fruits[1]=バナナ
set fruits[2]=チェリー
set fruits[3]=デーツ
set fruits[4]=エルダーベリー
この例では、fruits
という名前の配列を5つの要素で作成しています。それぞれの要素にはインデックス番号が割り当てられ、0から始まります。
プロ tip: 配列のインデックスは常に0から始めましょう。これはほとんどのプログラミング言語で従っている慣習です!
配列のアクセス
今、私たちには果物のバスケット(配列)があります。特定の果物をどうやって選ぶのでしょうか?インデックス番号を使います!
@echo off
set fruits[0]=りんご
set fruits[1]=バナナ
set fruits[2]=チェリー
echo 最初の果物は: !fruits[0]!
echo 二つ目の果物は: !fruits[1]!
echo 三つ目の果物は: !fruits[2]!
このスクリプトを実行すると以下のように表示されます:
最初の果物は: りんご
二つ目の果物は: バナナ
三つ目の果物は: チェリー
配列参照の周りの感叹符(!
)に注意してください。これが重要です!これはバッチが遅延展開を使用するように指示し、配列要素にアクセスするために必要です。
配列の修正
もしあなたがバナナよりブラックベリーを好むと感じたら?問題ありません!配列を簡単に修正できます:
@echo off
setlocal enabledelayedexpansion
set fruits[0]=りんご
set fruits[1]=バナナ
set fruits[2]=チェリー
echo 修正前: 二つ目の果物は !fruits[1]!
set fruits[1]=ブラックベリー
echo 修正後: 二つ目の果物は !fruits[1]!
このスクリプトの出力は以下の通りです:
修正前: 二つ目の果物は バナナ
修正後: 二つ目の果物は ブラックベリー
簡単でしたね?私たちはただ配列の二つ目の要素を置换えただけです!
配列の反復
では、私たちのバスケット(配列)の中のすべての果物を見たいと思ったらどうでしょうか?for
ループを使用して配列を反復します:
@echo off
setlocal enabledelayedexpansion
set fruits[0]=りんご
set fruits[1]=ブラックベリー
set fruits[2]=チェリー
set fruits[3]=デーツ
set fruits[4]=エルダーベリー
for /L %%i in (0,1,4) do (
echo 果物 %%i は: !fruits[%%i]!
)
このスクリプトの出力は以下の通りです:
果物 0 は: りんご
果物 1 は: ブラックベリー
果物 2 は: チェリー
果物 3 は: デーツ
果物 4 は: エルダーベリー
以下のようなことが起こっています:
-
/L
はループが数値の範囲を反復するように指示します -
%%i
は私たちのループ変数です -
(0,1,4)
は0から始まり、1ずつ増え、4で終了することを意味します
配列の長さ
他のプログラミング言語とは異なり、バッチは配列の長さを取得するための内蔵方法を持っていません。しかし、心配しないでください!わずかな回避策を作成することができます:
@echo off
setlocal enabledelayedexpansion
set fruits[0]=りんご
set fruits[1]=ブラックベリー
set fruits[2]=チェリー
set fruits[3]=デーツ
set fruits[4]=エルダーベリー
set "x=0"
:SymLoop
if defined fruits[%x%] (
set /a "x+=1"
GOTO :SymLoop
)
echo 果物の配列には %x% 個の要素があります。
このスクリプトの出力は以下の通りです:
果物の配列には 5 個の要素があります。
ここでしていることは、定義された要素の数を数えることで、未定義の要素に達するまでループを回します。これは箱の中のクレヨンの数を数えるのと似ています!
配列内での構造体の作成
少し進んだことを行いましょう。配列を使用してより複雑な構造を作成します。果物とその色の「データベース」を作ってみましょう!
@echo off
setlocal enabledelayedexpansion
set "fruits[0].name=りんご"
set "fruits[0].color=赤"
set "fruits[1].name=バナナ"
set "fruits[1].color=黄色"
set "fruits[2].name=ブルーベリー"
set "fruits[2].color=青"
for /L %%i in (0,1,2) do (
echo 果物 %%i は !fruits[%%i].color! い!fruits[%%i].name! です
)
これの出力は以下の通りです:
果物 0 は 赤い りんご です
果物 1 は 黄色い バナナ です
果物 2 は 青い ブルーベリー です
私たちは、それぞれの果物に名前と色を持つ構造を作成しました。これは、それぞれのクレヨンに色と特定の名前を持つより詳細なクレヨンボックスのようなものです!
結論
おめでとうございます!あなたはバッチスクリプティングの配列の世界への初めての一歩を踏み出しました。私たちは配列の作成、要素へのアクセスと修正、配列の反復、配列の長さの取得、そしてより複雑な構造の作成についてカバーしました。
おぼえものをしっかりと練習しましょう。自分の好きな本や映画の配列を作成してみてください。データを manipulate したり表示したりする違った方法を試してみてください。そうするうちに、あなたのスクリプトでさまざまな情報を整理し管理するために配列を使えるようになるでしょう!
ハッピーコーディング、そしてあなたの配列が常に実り多いことを祈っています! ???
メソッド | 説明 |
---|---|
配列の作成 |
set arrayname[index]=value を使用します |
配列要素のアクセス | 遅延展開を使用して !arrayname[index]! を使用します |
配列の修正 |
set arrayname[index]=newvalue で値を再割り当てします |
配列の反復 |
for /L ループを使用します |
配列の長さの取得 | ループを使用して定義された要素を数えます |
構造体の作成 | ドット表記を使用して arrayname[index].property=value
|
Credits: Image by storyset