In this tutorial, you will learn in-depth about different Batch file programming operators, types of operators, their precedence along with respective examples.
Batch file programming supports various types operators for performing mathematical and logical operations similar to other programming languages.
Don’t worry we will explain each batch file programming operators in detail:
Following list out the unary operator used in batch file programming.
Operators | Description |
---|---|
~ | Tilde operator |
! | Boolean NOT operator (negation) |
– | unary minus operator |
Tilde (~)
is a unary operator used for shortening the long directory names.
Example:
C:\> cd C:\Users\ICT\MicrosoftEdgeBackups\backups\MicrosoftEdgeBackup20180303
is same as
C:\> cd C:\Users\ICT\Micros~1\backups\Micros~1
Both of the above commands do same thing that is just a path to the location “C:\Users\ICT\MicrosoftEdgeBackups\backups\MicrosoftEdgeBackup20180303” on my computer.
Instead of typing all the characters, we can use tilde ~
operator after six consecutive characters to shorten the length.
Note: We have to write 1 after ~
i.e. micros~1
Batch file programming supports all the normal arithmetic operators as follow:
Operators | Description | Example |
---|---|---|
+ | Addition operator | Set /A 5+5 10 |
– | Subtraction operator | Set /A 10-5 5 |
% | Modulus operator | Set /A 5%2 1 |
/ | Division operator | Set /A 20/2 10 |
* | Multiplication operator | Set /A 2*2 4 |
Example
@echo off
SET /A a = 2
SET /A b = 4
Set /A s = %a% + %b%
echo Sum = %s%
pause
Output
Sum = 6
The precedence of arithmetic operators are in the following order:
/ * % + -
Let’s clear this from the following example:
@echo off
Set /A s = (20 - 5) * 2 + 8 / 2
echo s = %s%
pause
Output
s = 34
Explanation
The expression enclosed inside ( )
gets the highest priority in the precedence.
In the above example, (20 - 5)
gets the highest priority and calculated first giving 15.
Then division operator /
gets next priority thus 8 / 2
is evaluated giving 4
.
After this multiplication operator *
gets next priority thus 15 * 2
yields 30
.
Finally, addition operator +
performs addition operation 30 + 4
giving final result 34
.
Batch file programming offers relational operators for comparison similar to other programming languages.
Operators | Description | Example |
---|---|---|
EQU | equal to | x EQU y Return true if x is equal to y |
NEQ | not equal to | x NEQ y Returns true if x is not equal to y |
LSS | less than | x LSS y Returns true if x is less than y |
LEQ | less than or equal to | x LEQ y Returns true if x is less than or equal to y |
GTR | greater than | x GTR y Returns true if x is greater than y |
GEQ | greater than or equal to | x GEQ y Returns true if x is greater than or equal to y |
Let’s take a look at the example:
@echo off
SET /A x = 3
SET /A y = 4
if %x% EQU %y% echo x is equal to y
if %x% NEQ %y% echo x is not equal to y
if %x% LSS %y% echo x is less than y
if %x% LEQ %y% echo x is less than or equal to y
if %x% GTR %y% echo x is greater than y
if %x% GEQ %y% echo x is greater than or equal to y
pause
Output
Since x
is less than y
, the above example shows less than results only.
Operators | Description | Example |
---|---|---|
>> | Logical shift operator | command > filename Append the output to a file |
> | Re directional operator | command > filename Redirect the output to a file |
< | Re directional operator | command < filename Redirect text to command |
Redirection operator is used to redirecting the output of one command to the other file.
Example 1: > operator
@echo off
echo Testing of redirection operator > test.txt
The above command will redirect the output of echo
command 'Testing of redirection operator'
to a text file named test.txt
.
If there is no text file named test it will create a new one.
Example 2: > operator
@echo off
NET USER > test.txt
This will print the output of NET USER
command in test.txt
file as shown below:
User accounts for \\ICT ----------------------------------------------------- Administrator DefaultAccount Guest ICT WDAGUtilityAccount The command completed successfully.
Example 3:
@echo off
ping google.com >> test.txt
Now the above code will append the output of ping
command to the test.txt
file which was created earlier.
Output
User accounts for \\ICT ----------------------------------------------- Administrator DefaultAccount Guest ICT WDAGUtilityAccount The command completed successfully. Pinging google.com [216.58.221.46] with 32 bytes of data: Reply from 216.58.221.46: bytes=32 time=59ms TTL=53 Request timed out. Reply from 216.58.221.46: bytes=32 time=59ms TTL=53 Reply from 216.58.221.46: bytes=32 time=64ms TTL=53 Ping statistics for 216.58.221.46: Packets: Sent = 4, Received = 3, Lost = 1 (25% loss), Approximate round trip times in milli-seconds: Minimum = 59ms, Maximum = 64ms, Average = 60ms
Example 4: Using <
operator
I have created a file named Num.txt which contains numbers in random order as follow:
4 3 7 1 8
Now let’s run following code and see the output.
@echo off
SORT < Num.txt
pause
Output
Explanation
The above example sorts the random numbers of Num.txt
file and displays in the screen.
Let’s look at the bitwise operators in a batch script.
Operators | Description |
---|---|
& | Bitwise and operator |
| | Bitwise or operator |
^ | Bitwise exclusive or operator |
Following are the list of assignment operators in the batch file programming.
Operators | Example | Description |
---|---|---|
+= | Set /A x = 4 x += 2 Value of x: 6 |
2 is added to the value of x and the result is assigned to x |
-= | Set /A x = 4 x -= 2 Value of x: 2 |
2 is subtracted from the value of x and the result is assigned to x |
*= | Set /A x = 4 x *= 2 Value of x: 8 |
2 is multiplied to the value of x and the result is assigned to x |
/= | Set /A x = 4 x /= 2 Value of x: 2 |
The value of x is divided by 2 and the result is assigned to x |
%= | Set /A x = 4 x %= 2 Value of x: 2 |
This will find the modulus and result is assigned to x |
Let’s clear it out through example:
@echo off
SET /A x = 4
SET /A x += 2
echo x = %x%
SET /A x -= 2
echo x = %x%
SET /A x *= 2
echo x = %x%
SET /A x /= 2
echo x = %x%
SET /A x %= 2
echo x = %x%
pause
Output
Operators | Description |
---|---|
, | Separator |
&& | For using Multiple Commands |
|| | For executing one from many commands |
&&
operator is used for executing multiple commands is a single line.
@echo off
SET /A x = 4 && SET /A x += 2
echo x = %x%
pause
Output
x = 6
Explanation
In the above example, both SET
commands are executed in a single line.