Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
791 views
in Technique[技术] by (71.8m points)

windows - Batch file for loop /D flag not appearing in command line

I've got a small batch file that I want to use to copy a file from one location to many locations that may have different name.

for /D %%f in ("%%localappdata%%MicrosoftOpc*") do (
    for /D %%x in ("%%f*") do (copy /y user.config %%x)
 )

I'm able to get this to run fine in the command line, but if I try and run my batch script instead, this is all that's shown on the command line:

for / %f in ("%localappdata%MicrosoftOpc*") do (
   for / %x in ("%f*") do (copy /y user.config %x ) 
)

It looks like, for whatever reason, the /D flag is getting changed into just /

I'm rather new to batch scripting, so any help would be greatly appreciated!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

In a batch script: contrary to (correct) doubling the % percent sign in %%f and %%x parameters, do not double % in environment variable names like %localappdata% etc...

for /D %%f in ("%localappdata%MicrosoftOpc*") do (
    for /D %%x in ("%%f*") do (copy /y user.config %%x)
 )

However, that stunning / echoed instead of /D should not affect the for /D command functionality (still searching for an explanation).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...