Batch file
From Wikipedia, the free encyclopedia
Batch file | |
---|---|
File name extension | .bat .cmd .btm |
Type of format | Scripting |
Container for | Shell scripts |
In DOS, OS/2, and Microsoft Windows, a batch file is a text file containing a series of commands intended to be executed by the command interpreter. When a batch file is run, the shell program (usually COMMAND.COM
or cmd.exe
) reads the file and executes its commands, normally line-by-line. Batch files are useful for running a sequence of executables automatically and are often used by system administrators to automate tedious processes.
Although a batch file is analogous to a shell script in Unix-like operating systems, the limited syntax and commands available makes it is less suited for general-purpose programming. These limitations lead to the widespread use of "enhancement" commands such as those in the Norton Utilities and later the replacement shell 4DOS in the DOS era.
DOS batch files have the filename extension .bat
. Batch files for other environments may have different extensions, e.g. .cmd
in Windows NT and OS/2, or .btm
in 4DOS and related shells. There is no difference between the .bat and .cmd extensions when the file is directly executed. However, when a shortcut is used to launch them, .bat files run commands using the 16-bit COMMAND.COM command processor whereas if the extension is .cmd, the batch commands are run using the 32-bit Windows NT cmd.exe with all command extensions enabled. Also, the Windows 9x family only recognizes the .bat extension.
Contents |
[edit] History
Microsoft DOS and Windows batch programming has evolved along with the product releases of these operating systems. The command interpreters that come with these operating systems provide two distinct modes of work: interactive mode (in which the user types commands at a command prompt which are then executed immediately) and batch mode (which executes a predefined sequence of commands). The original concepts for both modes draw ideas from Unix shells, as well as other text-based command line interfaces from the early 1980s such as CP/M which in turn took much of their inspiration from TOPS-10 and TOPS-20 from Digital Equipment Corporation.
The MS-DOS operating system's batch program interpreter is COMMAND.COM
. Batch programs for MS-DOS are composed of a relatively simple set of commands interpreted directly by COMMAND.COM
(internal commands), and utilities that exist as separate executables (external commands). The evolution of this branch of batch programming proceeded through the releases of MS-DOS, and into Windows 95, Windows 98, and finally Windows Me. In MS-DOS, the most commonly used batch file was AUTOEXEC.BAT
, a special batch file that (if it is present) is automatically executed during the booting process.
The newest versions of Windows, Windows 2000 and Windows XP, and Windows Vista are not based on MS-DOS, but on Windows NT. NT-based systems include the cmd.exe
command line interpreter, which is generally compatible with COMMAND.COM
, although a few MS-DOS features are not available. However, cmd.exe
provides many additional features and commands not included with MS-DOS or the MS-DOS-based versions of Windows. COMMAND.COM
is still present under NT-based operating systems for better backward compatibility.
The limitations of the original batch file language led to various non-Microsoft interpreters to provide enhanced syntax; the most well-known of those are 4DOS and 4NT.
Although the IBM OS/2 operating system did support DOS-style batch files, it contained a version of REXX — a more advanced scripting language.
For complex tasks using Microsoft Windows version 98 and up, you may use Windows Script Host, which allows the running of scripts written in VBScript, JScript and related scripting languages. As of 2006, Microsoft created another scripting tool called Windows PowerShell, which can be used with Windows XP and above.
[edit] Example
An example of a simple batch file:
REM ECHO OFF prevents the printing of each command to standard output. @ECHO OFF REM ECHO. prints a blank line. ECHO. ECHO Hello World, press any key to start APROGRAM.EXE! PAUSE > NUL REM The first argument to the batch file can be referenced with "%1" APROGRAM.EXE %1 IF ERRORLEVEL 1 GOTO error ECHO. ECHO APROGRAM has finished whatever it was doing. GOTO end :error ECHO. ECHO Something went wrong with AProgram. :end