2014-07-09 7 views
0

J'essaie de renommer le contenu d'un dossier en fonction de son nom et en ajoutant un alphabet à la fin. Mais j'ai du mal à obtenir la lettre basée sur mon tableau défini d'alphabets. Voici mon code jusqu'à présent.Variable fichier vide variable

@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 

J'ai lu que l'utilisation du ENABLEDELAYEDEXPANSION aide dans ce genre de situation a également l'utilisation de (!) Pour la variable retardée? Je suis encore assez nouveau à ce sujet, je ne sais pas où je vais me tromper avec ça ou comment je peux créer un travail pour cela. Merci!

+0

S'il vous plaît envisager d'ajouter des détails au sujet de la tâche à votre question. – foxidrive

Répondre

1

remplacer la ligne

set suffix=!letters[%index%]! 

avec

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

%index% se réfère à la valeur de index au moment est analysé le for %%i, non pas comme il change à travers le fonctionnement de la boucle.

Notez que vous manquerez de suffixes si vous avez plus de 26 cibles!

(BTW - for %%a in (%1) do set folder=%%~na est probablement mieux lotis que set folder=%%~n1)