2014-12-04 149 views
0

Windows批處理腳本: 我有三個文件在drectory.I`m試圖循環通過位於目錄中的多個文件並重命名文件,但一些如何它不循環。 我可以看到,var1正在獲取正確的文件名,但不是sub1。這反過來以錯誤的輸出重命名目錄中的其他兩個文件。有人能幫我解決這個問題嗎?沒有循環遍歷所有文件

@echo on & setlocal EnableDelayedExpansion 

set a=9 
for /f "tokens=*" %%i in ('dir /b "C:\XX\YY\ZZ*"') do ( 
set var1=%%i 
SET sub1=%var1:~7,22% 
ECHO %sub1% 
    ren "%%i" "ABC!sub1!_!a!.dat" 
    set /a a+=1 
) 

回答

1
@echo on 
setlocal EnableDelayedExpansion 
set a=10001 
for /f "tokens=*" %%i in ('dir /b "C:\TEST\PBM\PAR*"') do ( 
set var1=%%i 
SET sub1=!var1:~7,22! 
ECHO !sub1! 
    ECHO ren "%%i" "ABC!sub1!_!a!.dat" 
    set /a a+=1 
) 

delayedexpansion隨着到在循環內改變必須使用!var!語法變量的值的任何參考。 %var%將訪問分析時間值值。

注意:REN現在是echo ed進行驗證。

+0

非常感謝。 – 2014-12-05 00:49:24