我试图根据文件夹的名称重命名文件夹的内容,并在最后添加一个字母。但是我很难根据我定义的字母数组得到这封信。到目前为止,这是我的代码。
@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 :(得分: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
)