Tim Chase wrote:
    for %a in (*.txt) do [command using %a]

instead of

    for %%a in (*.txt) do [command using %%a]

Then again, maybe I'm among the freakish few that actually use for-loops at the dos-prompt. :)

-tim

I have used them too, starting (in my case) with Dos 3.1. Your warning is valid on old DOS shells, and is regarded as "good form" writing by old hands like me, but IIRC, with "modern" versions of CMD.EXE, and with NDOS.EXE, 4DOS.EXE or 4NT.EXE, you may use either %a or %%a in either the command line or a batch file.

As tested under cmd.exe on WinXP:

:::::::::::::::::::::::::::::::::::::::::::::::::
C:\Temp>ver

Microsoft Windows XP [Version 5.1.2600]

C:\Temp>copy con x.bat
@echo off
for %f in (*.*) do @echo %f
^Z
        1 file(s) copied.

C:\Temp>x.bat
f was unexpected at this time.

C:\Temp> REM check to see if it's particular to bat vs. cmd

C:\Temp>ren x.bat x.cmd

C:\Temp>x.cmd
f was unexpected at this time.

C:\Temp>for %%f in (*.*) do @echo %%f
%%f was unexpected at this time.

C:\Temp>for %f in (*.*) do @echo %f
[directory listing]

C:\Temp>copy con x.bat
@echo off
Overwrite x.bat? (Yes/No/All): y
for %f in (*.*) do @echo %f
^Z
        1 file(s) copied.

C:\Temp>x.bat
[directory listing]
:::::::::::::::::::::::::::::::::::::::::::::::::


batch files do require the double percent-sign and using for-loops on the command line directly requres a single percent-sign.

Couldn't tell you about other shells. I haven't used 4dos since I last booted my Compaq 386SX/16 (a good 4-5 yrs ago) which is currently serving a critical role as 3" of monitor support...but it runs the dos version of vim :)

-tim

One more misremembered pseudo-fact down the drain. (Can't check it on this Linux box.)
Thanks.


Best regards,
Tony.

Reply via email to