これをうまく説明する方法がわからなかったので、ここにコードがあります
@echo off
set test=0
for /f %%a in (textfile.txt) do (
rem loops five times(5 lines in textfile.txt)
set /a test=test+1
rem Adds 1 to Test
echo %%a
rem Echo's correct line in file
echo %test%
rem Echo's whatever X was before the loop
)
echo %test%
rem Displays the correct value of X
pause
これは私が問題を見つけている場所の単なる例です。txtfile.txt には 5 行あるため、for ループは 5 回実行され、そのたびに test は +1 を取得し、/a は X の正しい値を表示しますが、 for ループの最後のエコーでは 0 が表示されます。これは、ループの前に test が設定されている値です。
ループが終了するまで test の値は変化しません...これを修正する方法はありますか?
もっと簡単な方法があるかもしれないので、私が達成したいことは次のとおりです。一連のサブフォルダー内のstrのすべてのrtfを検索し、それらすべてを新しい名前1.rtfですべてのディレクトリにコピーするforループを実行したい、2.rtf、3.rtf など。転送時に名前を変更する必要があるのは、それらがすべて同じ名前であるためです。