Microsoft KB Archive/75634

From BetaArchive Wiki
Knowledge Base


Percent Signs Stripped from Batch File Text

Article ID: 75634

Article Last Modified on 5/10/2003



APPLIES TO

  • Microsoft MS-DOS 3.1
  • Microsoft MS-DOS 3.2 Standard Edition
  • Microsoft MS-DOS 3.21 Standard Edition
  • Microsoft MS-DOS 3.3 Standard Edition
  • Microsoft MS-DOS 3.3a
  • Microsoft MS-DOS 4.0 Standard Edition
  • Microsoft MS-DOS 4.01 Standard Edition
  • Microsoft MS-DOS 5.0 Standard Edition
  • Microsoft MS-DOS 5.0a
  • Microsoft MS-DOS 6.0 Standard Edition
  • Microsoft MS-DOS 6.2 Standard Edition
  • Microsoft MS-DOS 6.21 Standard Edition
  • Microsoft MS-DOS 6.22 Standard Edition



This article was previously published under Q75634

SUMMARY

Using a percent sign (%) in a batch file requires that two percent signs (%%) be specified.

For example, the command to display "5%" from a batch file would be :

   ECHO 5%%
                

MORE INFORMATION

MS-DOS uses %1, %2, ... %9 as replaceable command line parameters. For example, before executing the command ECHO %1, %1 will be replaced with the first parameter passed to the batch file. %0 is replaced with the command used to execute the batch file.

A single percent sign on a line is treated as a "nul" character in a batch file. For example:

   ECHO %     is processed as ECHO
   ECHO a%b   is processed as ECHO ab
                

If a command contains two percent signs, MS-DOS will treat any characters between them as an environment variable to be expanded. For example, if the SET command shows that the current environment variables are

   COMSPEC=C:\COMMAND.COM
   PATH=C:\DOS
   PROMPT=$P$G
   B=C
                

then

   ECHO %PATH%     is processed as ECHO C:\DOS
   ECHO a%b%       is processed as ECHO aC
   ECHO a%b b%a    is processed as ECHO aa
                

If there are no characters between the two percent signs, one percent sign is stripped off and the other will remain. This is why a FOR command that echos the name of each file with a .COM extension would be

   FOR %V IN (*.COM) DO ECHO %V
                

but if the same command is placed in a batch file, the following is required:

   FOR %%V IN (*.COM) DO ECHO %%V
                

Reference(s):

"Microsoft MS-DOS Batch File Quick Reference," Microsoft Press.


Additional query words: 6.22 3.20 3.21 3.30 3.30a 4.00 4.01 4.01a 5.00 5.00a 6.00 6.20

Keywords: KB75634