Syntax to Declare a Variable
The variable is declared in a batch script using the set command and the variable’s name. Since they are not case-sensitive, variable names frequently incorporate numbers, characters, and underscores. It states the following:
As an illustration, the command that follows sets the variable name to the value “James”:
Accessing Variable Values
The “%VARIABLE_NAME%” syntax can be used to use a variable. For instance, the following command shows the variable name’s value:
This will output the text “James” to the console.
Scope of Variables
Batch files may include two different types of variables:
- Local variables are only available within the batch file in which they are identified.
- Global variables are accessible from any batch file that is running.
By default, in a batch file, all variables are global. To create a local variable, use the setlocal command. Using a local variable in a batch file is demonstrated here:
setlocal
rem Set the local variable `countLocal` to 5.
set countLocal=10
echo Local Count Variable Value: %countLocal%
endlocal
REM This will not work; countLocal is out of scope
echo The Value of Local Variable is out of scope: %countLocal%
This batch file will display the following in the console. Only the block of code that begins with the setlocal command and concludes with the endlocal command has access to the variable countLocal.
User Input:
A developer can use a batch file variable to capture user input. Using the set /p command, you can request input from the user and then allocate the value corresponding to that input to a variable.
It reads as follows:
For instance, the command below asks the user for their name and sets the input’s value to the variable user_Name:
The PROMPT_MESSAGE string can be used to display any text that we want the user to view. The variable VARIABLE_NAME will be used to hold the user input. The batch file shown here includes a variable to take user input:
rem Prompt the user for their name.
set /p user_Name=What is your name?
rem Display the user's name.
echo My name is %user_Name%.
When the user runs the batch file using the command prompt, the batch script will prompt the user to enter the name and then print the name to the console.
Arithmetic Operations
Variables can be employed in batch scripting to carry out mathematical operations like addition, multiplication, etc. The set /a command can be used to give the outcome of an algebraic expression and store it to a variable. It reads as follows:
The command given below is used to set the variable sumResult after adding the values of the variable’s number1 and number2:
Here is the list of basic Math functions:
- Multiplication (+)
- Subtraction (-)
- Divison (/)
- Multipliation (*)
- Modulus (%)
- Exponentiation (^)
The batch file is a tool that utilizes variables to perform arithmetic operations.
set number1=10
set number2=20
::Calculate Sum
set /a sum_Result=number1+number2
set /a subtraction_Result=number2-number1
set /a multiplication_Result=number1*number2
set /a division_Result=number1/number2
set /a mod_Result=number1%%number2
echo The SUM/ADDITION of numbers is %sum_Result%.
echo The Subtraction of numbers is %subtraction_Result%.
echo The PRODUCT/MULTIPLICATION of numbers is %multiplication_Result%.
echo The DIVISION/QUOTIENT of numbers is %division_Result%.
echo The MODULUS of numbers is %mod_Result%.
Check out the output in the below attached image.
Conditional Statements
We can use variables in conditional statements in batch files. The flow of a batch file can be controlled by conditional statements, depending on specific circumstances. The most common conditional statement in batch files is the if statement.
The syntax is as follows:
A Boolean expression that can only be evaluated as true or false constitutes the condition. Whenever the condition is true, the command is executed. The command is skipped if the criterion is false. For example:
The below batch file will prompt the user for their age and then check if they are old enough to vote. If the user is old enough to cast a vote, the echo command will be carried out. The echo command will be skipped if the user is not old enough to vote.
rem Prompt the user for their age.
set /p voter_Age=Enter your age?
rem Check if the user is old enough to vote.
if %voter_Age% geq 18 (
echo You are old enough to vote.
) else (
echo You are not old enough to vote.
Output:
String Manipulation
Developers can manipulate strings using batch file variables. Changes to a string’s content are made through the process of string manipulation. Using several commands like set, echo, for, and if batch scripts can also alter strings. Here are a few instances of string modification utilizing batch files’ variables:
Concatenating Strings
Two strings can be joined together with the + operator. For instance, the command below joins the strings “Tony” and “James”:
set myFirstName=Tony
set myLastName=James
rem Concatenate the first name and last name.
set stringConcatenate=%myFirstName% %myLastName%
echo Concatenation Result is: %stringConcatenate%
View the results of the aforementioned script.
Extracting Substrings
By employing the “: ” operator, a substring can be extracted from a string. The substring’s start position and end location are the two inputs for the “:” operator. At the beginning of the string, both the start and finish positions are calculated. In this case, the following command takes the string “Hello world” and removes the first 4 characters:
setlocal enabledelayedexpansion
rem Input string
set inputString=Hello world
rem Extract the first 4 characters
set subString=!inputString:~0,4!
echo Extracted Sub-String: %subString%
endlocal
View the results of the aforementioned script.
Replacing Substrings
The rem operator can be used to replace a substring within a string. The substring that has to be replaced and the replacement substring are the two inputs for the rem operator. For instance, the word “James” in the string “My Old Name was James” is changed to the word “Tony” with the following command. Additionally, it modifies a few other terms:
setlocal enabledelayedexpansion
rem Input string
set inputString=My Old Name was James
echo %inputString%
rem Replace "James" with "Tony"
set replaceResult=!inputString:James=Tony!
rem Replace "Old" with "New"
set replaceResult=!inputString:Old=New!
rem Replace "was" with "is"
set replaceResult=!inputString:was=is!
echo %replaceResult%
endlocal
View the results of the aforementioned script.
Splitting Strings
The user can divide a string into a collection of substrings using the for command. The variable that will hold the list of substrings and the delimiter that will be used to divide the string are the two inputs that the command requires. Using the space character as the delimiter, the following command, for instance, splits the string “Mission Impossible Rouge Nation” into a list of substrings:
setlocal enabledelayedexpansion
rem Input string
set movieName=Mission Impossible Rouge Nation
rem Split the string into substrings
for %%a in (!movieName!) do (
echo Movie Title Split: %%a
)
endlocal
View the results of the aforementioned script.
Special Variables
There are a few special variables in batch files that have predefined values. A few examples of these variables are:
- %DATE%: This variable contains the current date in the format “MM/DD/YYYY”.
- %TIME%: This variable contains the current time in the format “HH:MM:SS”.
- %RANDOM%: This variable contains a random number between 0 and 32767.
Code Snippet:
echo Current Date: %DATE%
echo Current Time: %TIME%
echo Random Number: %RANDOM%
View the results of the aforementioned script.
Environment Variables
Batch scripts can also access system environment variables such as PATH, USERNAME, and COMPUTERNAME. To access these variables, use % symbols, as follows:
echo My username is %USERNAME%
echo My Computer Name is %COMPUTERNAME%
echo Operating System is %OS%
echo JAVA Path is %JAVA_HOME%
View the results of the aforementioned script.
Conclusion
Batch file variables store values like text, numbers, or command output. They can be either local and global, with accesss limited to the code block. Commands like set, echo, and if are used to set, display, and control variable values, while if statements control file flow.