Whatever commands that you are manually performing in windows console window, can be automated using batch file. A Windows batch file is just a text file saved with *.bat extension.
A batch file is not as powerful as a programming language like Python, but in some cases can get the job done. The major advantage of batch file is that, it can be run in any Windows PC without installing any additional programs and it is fairly known among all programmers regardless of their programming language of choice.
This article is my reference guide for syntax whenever I want to do something in batch file. 
Basics of Windows Batch File This covers some of the core basics of batch file.
:: Comments can be added to batch file using '::' at the beginning 
@REM This is another way to add comment to a batch file
:: Printing to Console 
echo  This prints anything to the console window
:: Use the "timeout" command to make the console wait for a specified timeout in seconds  
:: If user presses any key during the timeout, it will immediately proceed to the execution of next line 
:: If user has not pressed any key and the timeout period is elapsed, it will proceed to the execution of next line 
timeout 60 
:: To pause indefinitely till user presses a key, use the "pause" command 
pause 
:: To call another batch file, use the call command 
:: File/Folder paths in batch file can either be absolute or relative to the current path 
call  SomeFolder\SubFolder\SomeBatchFileName.bat
:: Deleting a folder/directory 
RMDIR /S /Q FolderName
:: Deleting a file 
del  /f SomeFolder/SubFolder/RandomFile.txt
:: Copying file contents of one folder to another 
robocopy SourceFolder DestinationFolder
 
 
Loops and Structures in Windows Batch File This covers creation of arrays and usage of loops in batch file.
:: Turning echo off to disable printing of each line of below file to console 
@echo  off 
:: Delayed expansion has to be enabled, to dynamically assign values for variables using "!VariableName!" 
setlocal  enabledelayedexpansion 
:: You can use Windows environmental variables like %LocalAppData% 
:: If you want to get the path of a folder called "MyRandomFolder" inside an environmental variable like above, use as below. 
set  MyLocalPath = %LocalAppData% /MyRandomFolder
echo  !MyLocalPath!
:: For list of more such variables, refer to the table at https://en.wikipedia.org/wiki/Environment_variable#Windows 
:: Assigning a value for a variable using "set" command 
:: Below is a string variable  
set  MyModeFlag = dev
:: To define a variable as a number, use "/A" like below 
set  /A MyFavoriteNumber= 2 
:: Example IF..ELSE Case 
IF  %MyModeFlag% == dev (
	echo  Dev Mode. Value of MyFlag was !MyFlag!
) ELSE  (
	echo  Production Mode. Value of MyFlag was !MyFlag!
)
:: Defining Arrays in Batch File 
:: Technically arrays are not supported in batch file 
:: But we can statically define multiple variable names which will mimic an array, like below 
set  MyPaths [0 ]= C:\Program Files\Mozilla Firefox\firefox.exe
set  MyPaths [1 ]= C:\Program Files (x86 )\Notepad++\notepad++.exe
set  MyPaths [2 ]= C:\Program Files\Google\Chrome\Application\chrome.exe
:: Using two other variables to denote the start index and end index of the array 
set  /A start= 0 
set  /A step= 1 
set  /A end= 2 
:: Using For loop 
:: Use /L for Numeric Looping of For loop 
:: In below example, "%%a" is the iteration variable 
:: Single command For Loop. Replace echo with your desired command 
for  /L %%a  in (%start% ,%step% ,%end% ) do  echo  !MyPaths[%%a ]!
:: For multiline commands, use brackets as below 
for  /L %%a  in (%start% ,%step% ,%end% ) do  (
	echo  This is iteration %%a 
	echo  Current path is !MyPaths[%%a ]!
)
:: For other types of For Loop, refer to https://ss64.com/nt/for.html 
:: Pause - Wait for any key press 
pause 
 
 
Have you used batch file for any purpose? Have any useful tips/tricks related to batch file, let us know in the comments :-)
 
No comments:
Feel free to leave a piece of your mind.