How to Use the Microsoft Batch File Language

Batch files are DOS command line commands batched together. In Linux they are known as shell scripts, and follow a completely different syntax. Early Windows users had to use a batch file (autoexec.bat) to allocate a drive letter to their CD-ROM's, in order to install Windows from CD. Batch files are not so crucial nowadays, although still supported by newer versions of Windows.


Under Windows XP/2000+, batch files (*.bat) run in a special window (aka Command Prompt) created by c:\window\system32\cmd.exe (this could be called command.com in some instances). Commands can be typed in individually, or listed sequentially in a batch file, requiring use of batch file language. This How-To will tell you how to create and run a Microsoft batch file, giving a simple backup as an example.

Steps

  1. Image titled Use the Microsoft Batch File Language Step 1
    1
    Open your text editor. Expect to use keys A-Z/0-9/, the symbols (!$| etc), and Enter. Most commands do not check entry for upper/lowercase, so for the moment don't worry about CAPS (or cApS). Each command (and its parameters) goes on one line. Open a command line window (cmd.exe) to test the commands you want to run. Arrange your windows so you can see them both.
Write the Batch File
  1. 1
    Start writing the file. To start writing the file, most people start with @echo off as it stops each command being printed as it is processed. It reduces clutter on the user's screen.(This section does some hand-holding. If you want the finished script, jump to the next section.)
     : @echo OFF 
  2. 2
    Hit enter. Remember to press enter after each command.
  3. 3
    Welcome the user to the program. Type:
     : echo Welcome TO the Backup Script! 
  4. 4
    Hit enter again? Good.
  5. 5
    Leave a blank line for neat spacing then continue typing yet another line.
     : echo. 
  6. 6
    Press Enter one more time.
  7. 7
    Program what options you want the person who runs your program to see. This code below gives the user a choice. Either they press F, or N, or they press Q or CTRL-Z which cancels the whole script.
     : choice /C:FNQ /N SELECT [F]ull Backup OR [N]ew FILES only. Press [Q] OR [CTRL-Z] TO EXIT. 
  8. Image titled Use the Microsoft Batch File Language Step 2
    8
    Create commands for each choice. If the user presses Q the program returns a "3", and goes to section "end". If they press N the program returns a "2", and goes to section "small_backup". If they press F, the program returns a "1", and goes to "full_backup". "Errorlevel" is not a error message as such, just the only way to set output from the CHOICE command.


     : IF errorlevel 3 GOTO END : IF errorlevel 2 GOTO small_backup : IF errorlevel 1 GOTO full_backup 
  9. 9
    Create those sections referred to above. Type:
     : :small_backup<br> : echo. : echo. : echo You chose TO backup NEW FILES. Hit ANY KEY TO start OR ctrl-z TO cancel. pause >nul xcopy c:\mydirectory d:\mybackup /s/m/e GOTO END : :full_backup<br> : echo. : echo. : echo You chose TO backup ALL FILES. Hit ANY KEY TO start OR ctrl-z TO cancel. 

    pause >nul xcopy c:\mydirectory d:\mybackup /s/e goto end

    :end
    exit

    </source>

    • Create the directories referred to above, and copy a few small test files into the source directory ready for testing. Later you can change those directory names to suit your real <my documents="">.
      Image titled Use the Microsoft Batch File Language Step 3
  10. Image titled Use the Microsoft Batch File Language Step 4
    10
    Save the file in Notepad as "mybackup.bat".
  11. 11
    Double-click the file to run it.
The Full Code
  1. Image titled Use the Microsoft Batch File Language Step 5
    1
    Practice your copy & pasting skills on the following text.
     @echo OFF echo Welcome TO the Backup Script! echo. choice /C:FN /N SELECT [F]ull Backup OR [N]ew FILES Backup, OR ctrl-z TO EXIT. IF errorlevel 3 GOTO END IF errorlevel 2 GOTO small_backup IF errorlevel 1 GOTO full_backup :small_backup echo. echo. echo You chose TO backup NEW FILES. Hit ANY KEY TO start OR ctrl-z TO EXIT. pause >nul xcopy c:\mydirectory d:\mybackup /s/m/e GOTO END :full_backup echo. echo. echo You chose TO backup ALL FILES. Hit ANY KEY TO start OR ctrl-z TO EXIT. pause >nul xcopy c:\mydirectory d:\mybackup /s/e GOTO END :END EXIT 

Tips

  • Closing the Window: If you want the program to close when finished, leave the script as is. If you would like to leave the window open for further commands, change the command <exit> in the final section to <cmd>, which leaves the window open.
  • Current Directory: If the program references files in its own directory, you don't need to put in the drive letter. So with the batch file in C:\ you can target files in c:\temp\ just by typing: : Xcopy temp\*.* d:\temp /s/m

Warnings

  • While the commands shown here are pretty harmless, use of certain system commands in batch files are potentially dangerous if misused.
  • The CHOICE command is not included in Windows XP Home nor Professional and will cause the batch file to close abruptly without prior notice.

Things You'll Need

  • A text editor such as Notepad, or a programmer's editor such as HTML-Kit. Programs that embed further information in files (like Word) are not suitable.
  • Access to a Command Prompt. Click <start><run>, and type "cmd". Or access the feature under <accessories> in the Start Menu.
  • Some files that you can do a test backup on. Try with a small directory with few files, until you get going.

Sources and Citations

Article Info

Categories: Operating Systems