2014-07-09 155 views
0

我想重新命名基於它的名稱的文件夾的內容,並在末尾添加一個字母表。但是我很難根據我定義的字母表來獲得這封信。這是我的代碼到目前爲止。批處理文件空白變量

@echo off 

set letters[1]=a 
set letters[2]=b 
set letters[3]=c 
set letters[4]=d 
set letters[5]=e 
set letters[6]=f 
set letters[7]=g 
set letters[8]=h 
set letters[9]=i 
set letters[10]=j 
set letters[11]=k 
set letters[12]=l 
set letters[13]=m 
set letters[14]=n 
set letters[15]=o 
set letters[16]=p 
set letters[17]=q 
set letters[18]=r 
set letters[19]=s 
set letters[20]=t 
set letters[21]=u 
set letters[22]=v 
set letters[23]=w 
set letters[24]=x 
set letters[25]=y 
set letters[26]=z 

set /a index=0 

pushd %1 

for %%a in (%1) do set folder=%%~na 

echo renaming %folder%... 

setlocal enabledelayedexpansion 
for %%i in (*.*) do (
    set /a index+=1 
    set suffix=!letters[%index%]! 
    echo appending -!suffix!... 
    ren "%%~fi" "%folder%-!suffix!.*" 
) 
endlocal 

popd 

pause 
exit /b 

我讀過使用EnableDelayedExpansion有助於在這種情況下使用(!)的延遲變量?我在這方面還很新,我不知道我在哪裏出錯或者我可以如何爲此創建工作。謝謝!

+0

請考慮增加有關任務你的問題的細節。 – foxidrive

回答

1

替換行

set suffix=!letters[%index%]! 

CALL set suffix=%%letters[!index!]%% 

%index%index值在for %%i被解析的時間,而不是因爲它通過環的操作而改變。

請注意,如果您的目標超過26個,您將會用完後綴!

(順便說一句 - for %%a in (%1) do set folder=%%~na可能是富裕爲set folder=%%~n1