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

遅延拡張を適切に使用する必要があります。可変展開は2つの段階で達成されることを忘れないでください:最初に左から右の順序で%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 に答える