Batch File Programming.txt

(41 KB) Pobierz
__________________________________________________________________



Batch File Programming By Ankit Fadia ankit@bol.net.in

__________________________________________________________________





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, .bak , ~.* etc)

then it is very difficult to type the same set of commands over and over 

again. To perform a bulk set of same commands over and over again, Batch files 

are used. Batch Files are to DOS what Macros are to Microsoft Office and are used 

to perform an automated predefined set of tasks over and over again.



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:\windows>batch.bat



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.



*********************

Hacking Truth: While creating a batch file, one thing that you need to keep in 

mind is that the filename of the batch file should not use the same name as a 

DOS command. For example, if you create a batch file by the name dir.bat and then 

try to execute it at the prompt, nothing will happen.

This is because when command.com comes across a command, it first checks to see 

if it is an internal command. If it is not then command.com checks if it a .COM, 

.EXE or .BAT file with a matching filename.

All external DOS commands use either a .COM or a .EXE extension, DOS never 

bothers to check if the batch program exits.

*********************

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:\WINDOWS>batch_file_name



You would get the following result:



C:\WINDOWS>scandisk



And Scandisk is launched. So now the you know the basic functioning of Batch 

files, let' 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 Batch Printing Tool



The ECHO command is used for what the Print command is in other programming 

languages: To Display something on the screen. It can be used to tell the user 

what the bath file is currently doing. It is true that Batch programs display all 

commands it is executing but sometimes they are not enough and it is better to 

also insert ECHO commands which give a better description of what is presently 

being done. Say for example the following batch program which is full of the ECHO 

command deletes all files in the c:\windows\temp directory:



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:\WINDOWS>batch_file_name 

C:\WINDOWS>ECHO This Batch File deletes all unwanted Temporary files from your 

system

C:\WINDOWS>ECHO Now we go to the Windows\temp directory.

Now we go to the Windows\temp directory.

C:\WINDOWS>cd windows\temp

Invalid directory

C:\WINDOWS>ECHO Deleting unwanted temporary files

Deleting unwanted temporary files...

C:\WINDOWS>del *.tmp

C:\WINDOWS>ECHO Your System is Now Clean

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:\WINDOWS>ECHO OFF

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't work. The ECHO command return whether the 

ECHO is ON or OFF. Say you have started your batch file with the command ECHO OFF 

and then in the later line give the command ECHO, then it will display ' ECHO is 

off ' on the screen. You can display a blank line by giving the command 

ECHO.(ECHO followed by a dot)Simply leaving a blank line in the code too 

displays a blank line in the output.



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: Freezing Time



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:\WINDOWS>a.bat

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.



****************

HACKING TRUTH: Say you have saved a batch file in the c:\name directory. Now when 

you launch command.com the default directory is c:\windows and in orde...
Zgłoś jeśli naruszono regulamin