Working with the Command Path
The Microsoft Windows operating system uses the command path 
to locate executables. The types of files that Windows considers to be 
executables are determined by the file extensions for executables. File 
extensions can also be mapped to specific applications using file associations. 
The two sections that follow discuss techniques for working with the command 
path, file extensions, and file associations.
Managing the Command Path
You can view the current command path for executables by 
using the PATH command. Start a command shell, type path on a 
line by itself, and press Enter. If you’ve installed the Windows Support Tools 
and the Windows Resource Kit, the results should look similar to the 
following:
PATH=C:\Program Files\Windows Resource Kits\Tools\;C:\ProgramFiles\Support Tools\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
| Note | 
Observe the use of the semicolon (;) to separate individual 
paths. The command shell uses the semicolon to determine where one file path 
ends and another begins. | 
The command path is set during logon using system and user 
environment variables, namely the %PATH% variable. The 
order in which directories are listed in the path indicates the search order 
used by the command line when looking for executables. In the previous example, 
the command line searches in this order:
- 
C:\Program Files\Windows Resource Kits\Tools\
- 
C:\Program Files\Support Tools\
- 
C:\Windows\System32
- 
C:\Windows
- 
C:\Windows\System32\Wbem
You can permanently change the command path in the system 
environment using the SETX command. (The SETX command is a native external 
command in Windows Server 2003, but is available in Windows XP Professional only 
after the Windows XP Professional version of the Windows Resource Kit has been 
installed from the operating system CD-ROM.) For example, if you use specific 
directories for scripts or applications, you may want to update the path 
information. You can do this by using the SETX command to add a specific path to 
the existing path, such as setx PATH “%PATH%;C\Scripts”.
| Note | 
Observe the use of the quotation marks and the semicolon 
(;). The quotation marks are necessary to ensure that the value %PATH%;C:\Scripts is read as the second argument for the SETX 
command. And, as discussed previously, the semicolon is used to specify where 
one file path ends and another begins. | 
In this example, the directory C:\Scripts is appended to the 
existing command path and the sample path listed previously would be modified to 
read as follows:
PATH=C:\Program Files\Windows Resource Kits\Tools\;C:\ProgramFiles\SupportTools\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Scripts
Don’t forget about the search order that Windows uses. Because the 
paths are searched in order, the C:\Scripts directory will be the last one 
searched. This can sometimes slow the execution of your scripts. To help Windows 
find your scripts faster, you may want C:\Scripts to be the first directory 
searched. In this case, you could set the command path using the command
setx PATH "C:\Scripts;%PATH%"
Be careful when setting the command path. It is easy to overwrite 
all path information accidentally. For example, if you don’t specify the %PATH% environment variable when setting the path, you will 
delete all other path information. One way to ensure that you can easily 
recreate the command path is to keep a copy of the command path in a file. To 
write the current command path to a file, type path > orig_path.txt. To write the command path to the command-shell 
window, type path.
Now you have a listing or a file that contains a listing of 
the original command path. Not only does the path command list the current 
command path, it also can be used to set the command path temporarily for the 
current command shell. For example, type path 
%PATH%;C:\Scripts to append the C:\Scripts directory to the command path in 
the current command shell.
Managing File Extensions and File Associations
File extensions are what allow you to execute commands by 
typing just their command name at the command line. Two types of file extensions 
are used:
- 
File extensions for executables Executable files are defined with the %PATHEXT% environment variable. You can view the current settings by typing set pathext at the command line. The default setting is PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH. With this setting, the command line knows which files are executable and which files are not, so you don’t have to specify the file extension at the command line.
- 
File extensions for applications File extensions for applications are referred to as file associations. File associations are what enable you to pass arguments to executables and to open documents, spreadsheets, or other application files by double-clicking their file icon. Each known extension on a system has a file association that can be viewed by typing assoc followed by the extension, such as assoc.exe. Each file association in turn specifies the file type for the file extension. This can be viewed by typing the FTYPE command followed by the file association, such as ftype exefile.
With executables, the order of file extensions sets the search 
order used by the command line on a per-directory basis. Thus, if a particular 
directory in the command path has multiple executables that match the command 
name provided, a .com file would be executed before a .exe file and so on.
Every known file extension on a system has a corresponding file 
association and file type—even extensions for executables. In most cases, the 
file type is the extension text without the period followed by the keyword file, such as cmdfile, exefile, or batfile, and the file 
association specifies that the first parameter passed is the command name and 
that other parameters should be passed on to the application. 
You can look up the file type and file association for known 
extensions using the ASSOC and FTYPE commands. To find the association, type assoc followed by the file extension that includes the period. 
The output of the ASSOC command is the file type. So if you type ftype association (where 
association is the output of the ASSOC command), you’ll 
see the file type mapping. For example, if you type the following command to see 
the file associations for .exe executables: assoc .exe, you 
then type ftype exefile.
You’ll see the file association is set to
exefile="%1" %*
Thus, when you run an .exe file, Windows knows the first value is 
the command that you want to run and anything else provided are parameters to 
pass along.
| Tip | 
File associations and types are maintained in the Windows 
Registry and can be set using the ASSOC and FTYPE commands respectively. To 
create the file association, type assoc followed by the 
extension setting, such as assoc .pl=perlfile. To create the 
file type, set the file type mapping, including how to use parameters supplied 
with the command name, such as perlfile=C:\Perl\Bin\Perl.exe “%1” 
%*. To learn more about setting file associations and types, refer to the 
documentation for these two commands in Help And Support Center. | 
 
No comments:
Post a Comment