?? batch file programming.txt
字號:
__________________________________________________________________
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 order to
execute the batch file program stored in the c:\name directory you need to
change the directory and go to c:\name.This can be very irritating and time
consuming. It is a good practice to store all your batch programs in the same
folder. You can run a batch file stored in any folder(Say c:\name) from
anywhere(even c:\windows\history) if you include the folder in which the batch
file is stored (c:\name)in the AUTOEXEC.BAT file, so that DOS knows which folder
to look for the batch program.
So simply open c:\autoexec.bat in Notepad and append the Path statement to the
following line[c:\name is the folder in which all your batch files are stored.]:
SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\name
Autoexec.bat runs each time at startup and DOS knows each time, in which
directory to look for the batch files.
********************
Parameters: Giving Information to Batch Programs
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:\windows>batch_file_name abc def ghi
This batch file produces the following result:
C:\windows>batch_file_name abc def ghi
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -