0

我正在尝试编写一个使用起始变量运行多个操作的脚本,但它不起作用:该变量仅在第一次解析时才正确。你知道我做错了什么吗?这是批处理文件的限制还是我做错了什么?启用的扩展技术也不起作用。

SET FILE1=zr1
SET FILE2=za1
SET FILE3=za2


FOR /L %%I IN (1,1,3) DO ( 
-o "%%FILE%%I%%.out" 
ECHO %%FILE%%I%% 
CD p:\compress\compare 
XCOPY "p:\compress\compare\%%FILE%%I%%.out"   
RENAME "%%FILE%%I%%.out" "TEST" 
XCOPY "p:\compress\compare\%%FILE%%I%%.out" /e 
RENAME "%%FILE%%I%%.out" "GOOD" 
COMPARE 
RENAME "OUTPUT" "%%FILE%%I%%.out" 
CD p:\compress\outputFILEs 
XCOPY "p:\compress\compare\%%FILE%%I%%.out" /e 
) 
4

1 回答 1

1

您需要正确使用延迟扩展。请记住,变量扩展分两个阶段实现:%percents% 首先按从左到右的顺序,然后是 !exclamations!:

ECHO !FILE%%I! 

有关更详细的说明,请参阅此答案

另外,我建议您以这种方式使用数组表示法进行此类管理:

SET FILE[1]=zr1
SET FILE[2]=za1
SET FILE[3]=za2
. . .
ECHO !FILE[%%I]!

这里解释了这样做的原因

于 2012-05-22T18:02:23.700 回答