Batch File Syntax
How to make a blank line in a batch file
Sometimes you would like a blank line or two in the
output from a batch file. It isn't immediately clear how to do this.
Simply entering "echo" doesn't work because that will output the status
of command echoing. The trick is to enter
echo. Note
that "echo" is followed by a period with no space in between.
Check if a file exists
A special variant of the "If" statement can be used
to find out if a file is already present. The statement is
if
exist some file some command
The statement can also test for non-existence of a file with
if not
exist some file some command
The useful device "nul"
The invisible null device called "nul" has a
number of uses. (It's also sometimes called the "bit bucket" or the
"black hole".) Anything sent to it disappears. It can be used in
statements when you do not want output to be displayed. For example the
command
some command > nul
will carry out some command but send whatever is the normal output into
oblivion. Sometimes in a batch file you do not want any possible error
messages to be displayed. This is done by using
some
command 2> nul Another use for nul
is to apply a command, which normally works only on files, to a
directory instead. For example, it's useful sometimes to check if a
directory already exists. The statement
if
exist something some command
will check for the existence of a file but doesn't work for a directory.
However all directories contain the null device so you can use this
statement
if exist some directory\nul
to check if a directory already exists.
Stopping a runaway command
Sometimes you start a command only to find that it is
going on and on, spewing out screen after screen of output. Most of the
time you can terminate a command by simultaneously pressing the two keys
"Ctrl" and "c".
Pausing a scrolling screen
If you have a command with a lot of output,, you can
pause the scrolling so that you can read what's on the screen. Use the
keyboard combination "Ctrl+s". To resume scrolling, repeat Ctrl+s
Use drag and drop
Having to type the fully qualified path of a file
every time it's needed in a command can be tedious and subject to error.
Many people are unaware that a file can be dragged from a folder or
Windows Explorer view and dropped on an open command window. It saves a
lot of typing. (Doesn't work in Vista)
Go up one level above the working directory
Any Unix user knows this one but it's often new to
Windows users. To go up to the directory that is one level above the
working directory, enter
cd ..
You can repeat this to go up more levels. It's a little off the subject
of the command shell but in the Start-Run line just
entering the two periods ".." will also take you up one level from the
default working directory (the working directory is normally
%USERPROFILE%)
How to change the working directory to a folder
on a different drive
If you want to change the working directory for a
command window to a folder on a different drive, the command "cd"
doesn't work. You have to first enter the drive letter and colon and
then enter "cd" and the folder path. However, you can use the switch
/d to change the current working directory drive as shown below:
cd /d E:\testYou can
also make the change with one command entry if you use "pushd" instead
of "cd":
pushd E:\test
Watch out for spaces in file and folder names
The command shell does not recognize spaces in
path names. Any path name with spaces must be enclosed in quotation
marks. This problem often crops up in scripts where certain environment
variables or input arguments are used. For safety, variables that
involve file or folder names should be enclosed in quotes.
Special treatment of variables in "For"
statements in batch files
"For" statements are very useful, providing
powerful iterative methods. They have the peculiarity, however, of
requiring double percent signs for iteration variables in batch files.
in other words the syntax in a batch file is:for
%%variable In set Do
statementIf a "For" loop is run
directly from the command line, only a single percent sign is used. The
syntax is then:
for %variable In set Do
statement
Case-sensitive variables in "For" statements
In contrast to Unix systems, Windows is usually
not case-sensitive, However, iteration variables in "For" statements are
case-dependent. So %A is a different variable from %a.
Pin a command-line shortcut to the Start menu
If you use the command prompt frequently, make it
easily accessible. Open Start-All Programs-Accessories
and right-click the entry "Command Prompt". Select "Pin to Start menu"
from the context menu. Or go to \WINDOWS\system32 and
right-click the command shell file cmd.exe and select "Pin to
Start menu" from the context menu.
Create a shortcut to a command
If there is a command that you use frequently, you
can create a shortcut. The trick is to use the switch /k so
that the command prompt stays open. The entry for the shortcut should be
cmd /k somecommand.exe
If the command also needs switches, those can added
as well. (The general details of making a shortcut are at this page.)
Open Windows Explorer from the command line
To open the current command-line directory in a
Windows Explorer window use the command
start
.To open the directory above the
current command-line directory in a Windows Explorer window use the
command
start ..
Using the command "Start"
The tip given above is an example of how the
"Start" command can be used to invoke an action or a system folder or an
URL. For example, simply entering "cookies" in the Run line will open
the system folder Internet Cookies in Windows XP (but not in Vista).
However, in the command shell, you would need to enter
start
cookies In Vista, the command has to be
modified with the Shell command and would be
start
shell: cookies Similarly, you can open
a program like Microsoft Word with the command
start WinWord You can also open a Web
page in Internet Explorer with a command of the type
start http://somesite.com
Save typing with file-name and folder-name
completion
A very useful feature that can save a lot of
typing is the name or path completion function. This feature uses the
Tab key to complete file and folder names that you begin
typing. For example, type "a" (no quotes) into a command line and then
press the Tab key. Windows will complete your typing with the name of an
existing file or folder beginning with "a", starting in alphabetic
order. Press Tab again and the next possible file or folder
will be displayed. In this way, you can cycle through all files and
folders existing in your current path that begin with a particular
character or group of characters. The keyboard pair Shift + Tab
will take you backwards in the list. The completion function can be used
in more than one place in a command.
Enable QuickEdit mode for the command window
Being able to cut and paste to and from the
command window is very handy but it is not enabled by default. I use
this feature frequently and I suggest that you enable it for all command
windows. The details of how to enable QuickEdit are given on another
page. Once QuickEdit is enabled, the contents of the clipboard can be
entered into a command prompt by right-clicking in the command window.
Display the Command History
The default setting for the configuration of a
command window includes the capability for storing up to 50 previously
entered commands. The command history can be displayed by entering the
"F7" key.
Use the "sleep" command in Windows XP batch files
Sometimes it is desirable to have a batch file
wait a certain amount of time before it carries out the next command. If
you download the free Windows 2003 Server tools (described on another
page), one of the available tools is sleep.exe, which provides
a way to make batch files wait a specified interval. For an interval of
n seconds the command is:
sleep
n
Tips for the Vista command shell
For the most part, the features of the command
line are the same in Vista as they are in Windows XP but there are some
differences. (The Vista version is 6.0 whereas the XP version is 5.1.)
Tips specific to Vista are in this section.
Run as administrator in Vista
The Windows Vista operating system has a security
feature called User Account Control that limits the privileges of users
by default. Since the command line is usually involved with
administrative tasks, you'll often want to run as an administrator. This
can be done each time by right-clicking the icon for the command prompt
and choosing "Run as" from the context menu. A more convenient way is to
set the command prompt to run with administrator privileges by default.
Right-click the command prompt shortcut icon and choose "Properties"
from the context menu. Click the "Advanced" button and put a check by
"Run as administrator". Click "OK". This procedure also applies to
Windows XP. Note that you still have to enter a password when you open
the command prompt.
"Open Command Window Here" in Vista
It is now easy to open a command prompt referenced
to a folder of your choice in Vista. If the Shift key is held
down while right-clicking a folder, the context menu will contain an
entry, "Open Command Window Here". Selecting this entry will open a
command prompt with the chosen folder as the reference point for
commands.
Send command output to the Windows clipboard with
clip.exe
Vista comes with a command-line utility
clip.exe that can be used to redirect or pipe the output of another
command to the Windows clipboard. The command uses a "pipe" and has the
form:
some command | clipFor
example, to send a directory listing to the clipboard, the command is:
dir | clip
Place the contents of a text file into the
Windows clipboard with clip.exe
The utility clip.exe can also be used to
read a text file and place its contents in the Windows clipboard. The
command has the form:
clip <
somefile.txt
The batch file command called "choice" is back in
Vista
Old-timers will remember that DOS had a command
for batch files called "choice" that allowed for some limited user
interaction. The command was then removed from 32-bit command shells
because the "set /p" option gave equivalent or better functionality.
However, "choice" is back in Vista in a new form. Enter "choice /?" in a
Vista command prompt for details about its features.
Use the "choice" command to make a Vista batch
file wait
As described in a previous tip above, the command
"sleep" can be used in Windows XP batch files to make the batch process
wait a specified time before going to the next command. In Vista, the
"choice" command can be used for a similar purpose. The statement has
the form:
choice /T n /D y > nul
The switch "/T n" specifies a wait period of
n seconds. The switch "/D y" creates a default choice of "yes".
To suppress the unwanted text output of the command, it is redirected to
the null device (nul).
Switch added to "Dir" to enable viewing Alternate
Data Streams
NTFS files can have added information in "streams"
or "forks". These added items are normally hidden from access by most
Windows functions such as Explorer. In Vista a switch /R has
been added to the "dir" command that allows alternate data streams to be
listed.