Q72171: Workarounds for 128 Character PATH Limitation
Article: Q72171
Product(s): Microsoft Disk Operating System
Version(s): 2000,2000 SP1,3.1,3.2,3.21,3.3,3.3a,4.0,4.0 SP1,4.0 SP2,4.0 SP3,4.0 SP4,4.0 SP5,4.0 SP
Operating System(s):
Keyword(s):
Last Modified: 18-JAN-2002
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft MS-DOS operating system versions 3.1, 3.2, 3.21, 3.3, 3.3a, 4.0, 4.01, 5.0, 5.0a, 6.0, 6.2, 6.21, 6.22
- Microsoft Windows versions 2000, 2000 SP1 Advanced Server
- Microsoft Windows versions 2000, 2000 SP1 Professional
- Microsoft Windows versions 2000, 2000 SP1 Server
- Microsoft Windows NT Server versions 4.0, 4.0 SP1, 4.0 SP2, 4.0 SP3, 4.0 SP4, 4.0 SP5, 4.0 SP6a
- Microsoft Windows NT Server versions 4.0, 4.0 SP4, 4.0 SP5, 4.0 SP6, Terminal Server Edition
- Microsoft Windows NT Server, Enterprise Edition versions 4.0, 4.0 SP4, 4.0 SP5, 4.0 SP6a
- Microsoft Windows NT Workstation versions 4.0, 4.0 SP1, 4.0 SP2, 4.0 SP3, 4.0 SP4, 4.0 SP5, 4.0 SP6a
-------------------------------------------------------------------------------
SUMMARY
=======
All MS-DOS environment variables are limited by the COMMAND.COM input buffer
length of 128 characters, including the PATH. The figure 128 includes an
end-of-variable character, the variable name, and the = (equal) sign. Therefore,
PATH actually has only 122 characters to hold the directories you want
COMMAND.COM to search. This limit cannot be expanded.
The following are some techniques to get the most use out of those 122
characters:
- Use "C:" instead of "C:\".
- Eliminate unneeded directories from your PATH.
- Use short directory names.
- Create batch files that modify the PATH as necessary.
- Create batch files that execute programs.
- Eliminate drive letters in the PATH.
- Reduce the number of directories.
- Substitute drive letters for directories with SUBST.
- Use third party terminate-and-stay-resident "PATH extenders."
- Replace COMMAND.COM with another command interpreter.
MORE INFORMATION
================
1. If you want MS-DOS to search the root directory of a drive, omit the \
(backslash) by typing the following command:
" path c:" (without the quotation marks)
This causes MS-DOS to search C:\ regardless of the current directory of C.
NOTE: This does not mean removing the "\" from all directories in the PATH
command, only from the single reference to the root directory.
2. Eliminate unneeded directories from your PATH. Many applications
automatically add their directories to the PATH, whether you want them there
or not. In addition, when a PATH is very long, the search time to find items
becomes quite lengthy because MS-DOS must search all the directories in the
PATH.
You may need to change directories to run applications not in the PATH.
3. Use short directory names. This may require renaming directories, which can
be done with the MS-DOS Shell and many third-party utility packages.
Short directory names tend to be more cryptic and difficult to remember. Also,
some applications (notably menu programs) save directory information for
future use and may even require reinstallation to be able to use another
directory.
NOTE: Do NOT rename a directory when any program is using any files in that
directory. For this reason, it is best to exit from all applications and/or
multitasking and task switching software, such as Windows, before renaming
directories.
4. Set up a series of batch files that set up the path depending on your current
needs. One way to do this is to have a BASEPATH.BAT file, which sets a
minimal or basic path, and then to have other batch files that modify this
basic path. Another way is to have a batch file save the current PATH, set a
new one, and then restore the previous PATH. For more information, query on
the following words:
saving and old and path
However, you must invest time and effort in making and maintaining the batch
file system.
5. Batch files can also be used to change to the appropriate subdirectory,
execute the program desired, and change back. For more information, see the
descriptions of creating a menu system with batch files as described in
"Supercharging MS-DOS" by Van Wolverton, and in the Microsoft Quick Reference
book "MS-DOS Batch Files" by Kris Jamsa. Both of these are published by
Microsoft Press.
However, you must invest time and effort in making and maintaining the batch
file system.
6. If you primarily use only one logical drive for most of your activity, do not
add the drive specification for each path entry. For example, if you are
primarily using drive C, and your path used to be the following
set path=c:\bin;c:\dos;c:\win;c:\util
you could shorten it to the following:
set path=\bin;\dos;\win;\util
NOTES:
Removing drive letters from your path creates problems with shared
applications in Windows. (Some shared applications do not run.)
This method will only work while your active drive is drive C. If you move to
drive A, MS-DOS will look for the path entry on the A drive. This can cause
the MS-DOS search to work incorrectly.
For example, the PATH was edited to include \WIN, instead of C:\WIN, and the
command WIN was typed at the C prompt:
" C:\>win" (without the quotation marks)
MS-DOS would find and run C:\WIN\WIN.COM. But this would not be true if the
command was typed at the A prompt:
" A:\>win" (without the quotation marks)
This would result in a "Bad command or file name error" because MS-DOS would
be searching for A:\WIN\WIN.COM.
7. Group path entries together, moving executable files from more than one path
entry into a single directory. For example, if you use several utility
packages, you might want to group them into C:\UTIL instead of C:\NORTON,
C:\PCTOOLS, and C:\SK.
NOTE: This may make it harder to organize your drive.
8. The SUBST command can be used to substitute a drive letter for a directory.
(If drive letters past E are used, it may be necessary to add or modify the
LASTDRIVE= statement in CONFIG.SYS.) The following commands demonstrate how
this is used:
C:\dos\subst i: c:\util
C:\dos\subst j: c:\c600a
path c:\dos;i:;i:\bats;i:\nu;j:\binb;j:\binr;j:\binp;
These lines could be in the AUTOEXEC.BAT file, or in a SETPATH.BAT file, which
could then be called as needed.
Because SUBST disguises the real directory structure, it can cause problems
for some applications and some DOS utilities. For example, you cannot remove
a SUBSTituted directory or FORMAT a SUBSTituted drive.
NOTE: SUBST should not be active when Microsoft Windows is being installed. To
display any SUBSTituted directories, type "SUBST" (without the quotation
marks) at the prompt with no parameters:
C:\>subst
I: => C:\util
J: => C:\c600a
To deactivate the SUBST command for these directories, type the following:
" C:\>SUBST I: /D
C:\>SUBST J: /D" (without the quotation marks)
For more information on SUBST and Windows, query on the following words:
SUBST and join and Windows and problems
9. There are third party "PATH extenders" that fool COMMAND.COM into using a
longer PATH. Some are shareware and/or public domain.
Drawback: These programs may be dependent on particular MS-DOS versions and
may interfere with applications that expect a maximum PATH of 128 characters.
10. Finally, as the 128-character limit is a limitation of the command
interpreter, COMMAND.COM, the limit can be bypassed entirely by not using
COMMAND.COM. MS-DOS version 2.00 introduced support for using an alternate
command interpreter (or "shell") with the CONFIG.SYS SHELL= command.
A third-party command interpreter called NDOS is supplied with Norton
Utilities version 6, along with a NDOS manual. NDOS is compatible with
MS_DOS 5.0. The path limit for NDOS is 244 characters. For more information,
contact:
Symantec, Peter Norton Group
10201 Torre Avenue
Cupertino, Ca. 95014-2132
(408) 253-9600
A third-party choice is the product 4DOS, by J.P. Software, which has a 256
character environment variable limit. For more information, contact:
J.P. Software
P.O. 1470
East Arlington, MA 02174
(617) 646-3975
Drawback: 4DOS and other command interpreters may not work with all
applications or all MS-DOS versions.
All MS-DOS environment variables are limited by the COMMAND.COM input buffer
length of 128 characters. The PATH statement and other environment variables
cannot exceed 127 characters, including spaces. The total length of the
statement is 128 bytes; however, the 128th is reserved for an "End-Of-String"
NULL byte.
The products included here are manufactured by vendors independent of Microsoft;
we make no warranty, implied or otherwise, regarding these products' performance
or reliability.
Additional query words: 3.20 3.21 3.30 3.30a 4.00 4.01 4.01a 5.00
======================================================================
Keywords :
Technology : kbWinNTsearch kbWinNTWsearch kbWinNTW400 kbWinNTW400search kbWinNT400search kbwin2000AdvServ kbwin2000AdvServSearch kbwin2000Serv kbWinNTW400sp5 kbWinNTW400sp4 kbWinNTW400sp3 kbWinNTW400sp2 kbWinNTW400sp1 kbWinNTSsearch kbWinNTSEntSearch kbWinNTSEnt400sp5 kbWinNTSEnt400sp4 kbWinNTSEnt400 kbWinNTS400sp6 kbWinNTS400sp5 kbWinNTS400sp4 kbWinNTS400sp3 kbWinNTS400sp2 kbWinNTS400sp1 kbWinNTS400search kbWinNTS400 kbwin2000ServSearch kbwin2000Search kbwin2000ProSearch kbwin2000Pro kbNTTermServ400 kbNTTermServ400sp4 kbNTTermServ400sp5 kbNTTermServ400sp6 kbNTTermServSearch kbWinAdvServSearch kbWin2000AdvServSP1 kbWin2000ProSP1 kbwin2000ServSP1 kbWinNTSEnt400SP6a kbWinNTW400SP6a kbMSDOSSearch kbMSDOS321 kbMSDOS400 kbMSDOS320 kbMSDOS330a kbMSDOS621 kbMSDOS622 kbMSDOS620 kbMSDOS600 kbMSDOS310 kbMSDOS500 kbMSDOS330 kbMSDOS401 kbMSDOS500a
Version : :2000,2000 SP1,3.1,3.2,3.21,3.3,3.3a,4.0,4.0 SP1,4.0 SP2,4.0 SP3,4.0 SP4,4.0 SP5,4.0 SP6,4.0 SP6a,4.01,5.0,5.0a,6.0,6.2,6.21,6.22
=============================================================================
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.
Copyright Microsoft Corporation 1986-2002.