尝试在批处理文件中多次使用变量

时间:2012-05-22 17:31:00

标签: batch-file

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

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 
) 

1 个答案:

答案 0 :(得分:1)

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

ECHO !FILE%%I! 

有关更详细的说明,请参阅this answer

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

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

解释here

的原因