tools:batch
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
tools:batch [2024/06/03 07:07] – created Humphrey Boa-Gart | tools:batch [2025/10/12 10:49] (current) – Humphrey Boa-Gart | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{wst> | + | #redirect tools: |
- | + | ||
- | ====== Batch ====== | + | |
- | + | ||
- | Batch file programming is nothing but the Windows version of Unix Shell Programming. Let's start by understanding what happens when we give a DOS command. DOS is basically a file called command.com It is this file (command.com) which handles all DOS commands that you give at the DOS prompt---such as COPY, DIR, DEL etc. These commands are built in with the Command.com file. (Such commands which are built in are called internal commands.).DOS has something called external commands too such as FORMAT, UNDELETE, BACKUP etc. | + | |
- | + | ||
- | So whenever we give a DOS command either internal or external, command.com either straightaway executes the command (Internal Commands) or calls an external separate program which executes the command for it and returns the result (External Commands.) | + | |
- | + | ||
- | So why do I need Batch File Programs? Say you need to execute a set of commands over and over again to perform a routine task like Backing up Important Files, Deleting temporary files(*.tmp, | + | |
- | + | ||
- | So how do I create batch files? To start enjoying using Batch files, you need to learn to create Batch files. Batch files are basically plain text files containing DOS commands. So the best editor to write your commands in would be Notepad or the DOS Editor (EDIT) All you need to remember is that a batch file should have the extension .BAT(dot bat)Executing a batch file is quite simple too. For example if you create a Batch file and save it with the filename batch.bat then all you need to execute the batch file is to type: | + | |
- | + | ||
- | C: | + | |
- | + | ||
- | So what happens when you give a Batch file to the command.com to execute? Whenever command.com comes across a batch file program, it goes into batch mode. In the batch mode, it reads the commands from the batch file line by line. So basically what happens is, command.com opens the batch file and reads the first line, then it closes the batch file. It then executes the command and again reopens the batch file and reads the next line from it. Batch files are treated as Internal DOS commands. | + | |
- | + | ||
- | Now let's move on to your first Batch file program. We will unlike always(Normally we begin with the obligatory Hello World program) first take up a simple batch file which executes or launches a .EXE program. Simply type the following in a blank text file and save it with a .BAT extension. | + | |
- | + | ||
- | C: | + | |
- | cd windows | + | |
- | telnet | + | |
- | + | ||
- | Now let's analyze the code, the first line tells command.com to go to the C: Next it tells it to change the current directory to Windows. The last line tells it to launch the telnet client. You may contradict saying that the full filename is telnet.exe. Yes you are right, but the .exe extension is automatically added by command.com. Normally we do not need to change the drive and the directory as the Windows directory is the default DOS folder. So instead the bath file could simply contain the below and would still work. | + | |
- | + | ||
- | telnet | + | |
- | + | ||
- | Now let's execute this batch file and see what results it shows. Launch command.com (DOS) and execute the batch file by typing: | + | |
- | + | ||
- | C: | + | |
- | + | ||
- | You would get the following result: | + | |
- | + | ||
- | C: | + | |
- | + | ||
- | And Scandisk is launched. So now the you know the basic functioning of Batch files, let's move on to Batch file commands. | + | |
- | + | ||
- | ===== The REM Command ===== | + | |
- | + | ||
- | The most simple basic Batch file command is the REM or the Remark command. It is used extensively by programmers to | + | |
- | insert comments into their code to make it more readable and understandable. This command ignores anything there is on that line. Anything on the line after REM is not even displayed on the screen during execution. It is normally not used in small easy to understand batch programs but is very useful in huge snippets of code with geek stuff loaded into it. So if we add Remarks to out first batch file, it will become: | + | |
- | + | ||
- | REM This batch file is my first batch program which launches the fav hacking tool; Telnet | + | |
- | + | ||
- | telnet | + | |
- | + | ||
- | The only thing to keep in mind while using Remarks is to not go overboard and putting in too many of them into a single program as they tend to slow down the execution time of the batch commands. | + | |
- | + | ||
- | ===== ECHO ===== | + | |
- | + | ||
- | The ECHO command is used for what the Print command is in other programming | + | |
- | + | ||
- | ECHO This Batch File deletes all unwanted Temporary files from your system ECHO Now we go to the Windows\temp directory. cd windows\temp ECHO Deleting unwanted temporary files.... del *.tmp ECHO Your System is Now Clean | + | |
- | + | ||
- | Now let's see what happens when we execute the above snippet of batch code. | + | |
- | + | ||
- | < | + | |
- | C: | + | |
- | C: | + | |
- | C: | + | |
- | Now we go to the Windows\temp directory. | + | |
- | C: | + | |
- | Invalid directory | + | |
- | C: | + | |
- | Deleting unwanted temporary files... | + | |
- | C: | + | |
- | C: | + | |
- | Your System is Now Clean | + | |
- | </ | + | |
- | + | ||
- | The above is a big mess! The problem is that DOS is displaying the executed command and also the statement within the ECHO command. To prevent DOS from displaying the command being executed, simply precede the batch file with the following command at the beginning of the file: | + | |
- | + | ||
- | ECHO OFF | + | |
- | + | ||
- | Once we add the above line to our Temporary files deleting Batch program , the output becomes: | + | |
- | + | ||
- | C: | + | |
- | + | ||
- | This Batch File deletes all unwanted Temporary files from your system Now we go to the Windows\temp directory. Invalid directory Deleting unwanted temporary files... File not found Your System is Now Clean | + | |
- | + | ||
- | Hey pretty good! But it still shows the initial ECHO OFF command. You can prevent a particular command from being shown but still be executed by preceding the command with a @ sign. So to hide even the ECHO OFF command, simple replace the first line of the batch file with @ECHO OFF | + | |
- | + | ||
- | You might think that to display a blank line in the output screen you can simply type ECHO by itself, but that doesn' | + | |
- | + | ||
- | You can turn ON the ECHO anytime by simply giving the command ECHO ON. After turning the echo on , if you give the command ECHO then it will return ' ECHO is on ' | + | |
- | + | ||
- | ===== The PAUSE Command ===== | + | |
- | + | ||
- | Say you create a batch file which shows the Directory Listing of a particular folder(DIR) before performing some other task. Or sometimes before deleting all files of a folder, you need to give the user time to react and change his mind. PAUSE, the name says it all, it is used to time out actions of a script. Consider the following scenario: | + | |
- | + | ||
- | < | + | |
- | REM This Batch program deletes *.doc files in the current folder. | + | |
- | REM But it gives the user to react and abort this process. | + | |
- | @ECHO OFF | + | |
- | ECHO WARNING: Going to delete all Microsoft Word Document | + | |
- | ECHO Press CTRL+C to abort or simply press a key to continue. | + | |
- | PAUSE | + | |
- | DEL *.doc | + | |
- | </ | + | |
- | + | ||
- | Now when you execute this batch program, we get the following output: | + | |
- | + | ||
- | C: | + | |
- | WARNING: Going to delete all Microsoft Word Document Press CTRL+C to abort or simply press a key to continue. Press any key to continue . . . | + | |
- | + | ||
- | The batch file program actually asks the user if he wishes to continue and gives the user the option to abort the process. Pressing CTRL+C cancels the batch file program(CTRL+C and CTRL+Break bring about the same results) | + | |
- | + | ||
- | ^C | + | |
- | Terminate batch job (Y/N)?y | + | |
- | + | ||
- | After this you will get the DOS prompt back. | + | |
- | + | ||
- | ===== Parameters ===== | + | |
- | + | ||
- | To make batch programs really intelligent you need to be able to provide them with parameters which are nothing but additional valuable information which is needed to ensure that the bath program can work efficiently and flexibly. To understand how parameters work, look at the following script: | + | |
- | + | ||
- | @ECHO OFF | + | |
- | ECHO First Parameter is %1 | + | |
- | ECHO Second Parameter is %2 | + | |
- | ECHO Third Parameter is %3 | + | |
- | + | ||
- | The script seems to be echoing(printing) messages on the screen, but what do the strange symbols %1 , % 2 etc stand for? To find out what the strange symbols stand for save the above script and go to DOS and execute this script by passing the below parameters: | + | |
- | + | ||
- | C: | + | |
- | + | ||
- | This batch file produces the following result: | + | |
- | + | ||
- | C: | + | |
- | First Parameter is abc | + | |
- | Second Parameter is def | + | |
- | Third Parameter is ghi | + | |
- | + | ||
- | The first line in the output is produced by the code line: | + | |
- | + | ||
- | ECHO First Parameter is %1 | + | |
- | + | ||
- | Basically what happens is that when DOS encounters the %1 symbol, it examines the original command used to execute the bath program and look for the first word (argument) after the batch filename and then assigns %1 the value of that word. So one can say that in the ECHO statement %1 is replaced with the value of the first argument. In the above example the first word after the batch file name is abc, therefore %1 is assigned the value of this word. | + | |
- | + | ||
- | The %2 symbol too works in the similar way, the only difference being that instead of the first argument, DOS assigns it the value of the second argument, def. Now all these symbols, %1, %2 are called replaceable parameters. Actually what happens is that %1 is not assigned the value of the first argument, but in fact it is replaced by the value of the first argument. | + | |
- | + | ||
- | If the batch file command has more parameters than what the batch file is looking for, then the extras are ignored. For example, if while executing a batch file program , we pass four arguments, but the batch file program requires only 3 parameters, then the fourth parameter is ignored. | + | |
- | + | ||
- | To understand the practical usage of parameters, let's take up a real life example. Now the following script requires the user to enter the name of the files to be deleted and the folder in which they are located. | + | |
- | + | ||
- | @ECHO OFF | + | |
- | CD\ | + | |
- | CD %1 | + | |
- | DEL %2 | + | |
- | + | ||
- | This script can be called from the DOS prompt in the following way: | + | |
- | + | ||
- | C: | + | |
- | + | ||
- | In a single script we cannot use more that nine replaceable parameters. This means that a particular batch file will have replaceable parameters from %1 to %9.Infact there is a tenth replaceable parameter, the %0 parameter. The %0 parameter contains the name of the batch file itself. | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | {{tag> | + |
tools/batch.1717398449.txt.gz · Last modified: (external edit)
Find this page online at: https://bestpoint.institute/tools/batch
Find this page online at: https://bestpoint.institute/tools/batch