Batch Script - Arrays: A Beginner's Guide

Hello there, future programmers! Today, we're going to dive into the exciting world of arrays in Batch scripting. Don't worry if you've never written a line of code before – I'll be your friendly guide on this journey. By the end of this tutorial, you'll be manipulating arrays like a pro!

Batch Script - Arrays

What is an Array?

Before we jump in, let's understand what an array is. Imagine you have a box of crayons. Each crayon is a different color, but they're all stored in one box. An array is like that box – it's a container that can hold multiple items (called elements) of the same type.

Creating an Array

In Batch scripting, creating an array is straightforward. We use the set command to define our array. Let's create an array of fruits!

@echo off
set fruits[0]=Apple
set fruits[1]=Banana
set fruits[2]=Cherry
set fruits[3]=Date
set fruits[4]=Elderberry

In this example, we've created an array called fruits with five elements. Each element is assigned an index number, starting from 0.

Pro tip: Always start your array index at 0. It's a convention followed in most programming languages!

Accessing Arrays

Now that we have our fruit basket (array), how do we pick a specific fruit? We use the index number!

@echo off
set fruits[0]=Apple
set fruits[1]=Banana
set fruits[2]=Cherry

echo The first fruit is: !fruits[0]!
echo The second fruit is: !fruits[1]!
echo The third fruit is: !fruits[2]!

When you run this script, you'll see:

The first fruit is: Apple
The second fruit is: Banana
The third fruit is: Cherry

Notice the exclamation marks (!) around the array references. These are crucial! They tell Batch to use delayed expansion, which is necessary for accessing array elements.

Modifying an Array

What if we decide we prefer Blackberry to Banana? No problem! We can easily modify our array:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=Apple
set fruits[1]=Banana
set fruits[2]=Cherry

echo Before: The second fruit is !fruits[1]!

set fruits[1]=Blackberry

echo After: The second fruit is !fruits[1]!

This script will output:

Before: The second fruit is Banana
After: The second fruit is Blackberry

See how easy that was? We just replaced the second element of our array!

Iterating Over an Array

Now, what if we want to see all the fruits in our basket? We can use a for loop to iterate over our array:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=Apple
set fruits[1]=Blackberry
set fruits[2]=Cherry
set fruits[3]=Date
set fruits[4]=Elderberry

for /L %%i in (0,1,4) do (
    echo Fruit %%i is: !fruits[%%i]!
)

This script will output:

Fruit 0 is: Apple
Fruit 1 is: Blackberry
Fruit 2 is: Cherry
Fruit 3 is: Date
Fruit 4 is: Elderberry

Here's what's happening:

  • /L tells the loop to iterate over a range of numbers
  • %%i is our loop variable
  • (0,1,4) means start at 0, increment by 1, and stop at 4

Length of an Array

Unlike some other programming languages, Batch doesn't have a built-in way to get the length of an array. But don't worry! We can create a little workaround:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=Apple
set fruits[1]=Blackberry
set fruits[2]=Cherry
set fruits[3]=Date
set fruits[4]=Elderberry

set "x=0"
:SymLoop
if defined fruits[%x%] (
    set /a "x+=1"
    GOTO :SymLoop
)
echo The fruits array has %x% elements.

This script will output:

The fruits array has 5 elements.

What we're doing here is counting how many elements are defined until we hit an undefined element. It's like counting how many crayons are in the box until you reach an empty slot!

Creating Structures in Arrays

Now, let's get a bit more advanced. We can use arrays to create more complex structures. Let's make a "database" of fruits with their colors!

@echo off
setlocal enabledelayedexpansion

set "fruits[0].name=Apple"
set "fruits[0].color=Red"
set "fruits[1].name=Banana"
set "fruits[1].color=Yellow"
set "fruits[2].name=Blueberry"
set "fruits[2].color=Blue"

for /L %%i in (0,1,2) do (
    echo Fruit %%i is a !fruits[%%i].color! !fruits[%%i].name!
)

This will output:

Fruit 0 is a Red Apple
Fruit 1 is a Yellow Banana
Fruit 2 is a Blue Blueberry

We've created a structure where each fruit has a name and a color. It's like having a more detailed crayon box, where each crayon has a color and a specific name!

Conclusion

Congratulations! You've just taken your first steps into the world of arrays in Batch scripting. We've covered creating arrays, accessing and modifying elements, iterating over arrays, finding the length, and even creating more complex structures.

Remember, practice makes perfect. Try creating your own arrays, maybe with your favorite books or movies. Experiment with different ways to manipulate and display the data. Before you know it, you'll be using arrays to organize and manage all sorts of information in your scripts!

Happy coding, and may your arrays always be fruitful! ???

Method Description
Creating an Array Use set arrayname[index]=value
Accessing Array Elements Use !arrayname[index]! with delayed expansion
Modifying an Array Reassign value with set arrayname[index]=newvalue
Iterating Over an Array Use a for /L loop
Finding Array Length Use a loop to count defined elements
Creating Structures Use dot notation: arrayname[index].property=value

Credits: Image by storyset