文件夹布局就像:
根\ folder1a \ subfolder2a \ randommmsubfolder3a
根\ folder1b \ subfolder2b \ randommmsubfolder3b
我想删除/删除第三级深层文件夹名称的8个字符。基本上每个名字的“randommm”部分。有些名字上有惊叹号。 我有一个循环批处理,但它只重命名第一次遇到,但之后没有进展。这是我的代码:
cd "C:\Root"
for /D %%i in (*) do (
cd %%i
for /D %%j in (*) do (
cd %%j
setlocal DisableDelayedExpansion
for /D %%k in (*) do (
set name=%%k
setlocal enableextensions enabledelayedexpansion
ren "!name!" "!name:~8!"
endlocal
endlocal
)))
答案 0 :(得分:0)
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
pushd "%sourcedir%"
for /D %%i in (*) do (
pushd "%%i"
for /D %%j in (*) do (
pushd "%%j"
setlocal DisableDelayedExpansion
for /D %%k in (*) do (
set "name=%%k"
setlocal enableextensions ENABLEDELAYEDEXPANSION
ECHO ren "!name!" "!name:~8!"
ENDLOCAL
)
ENDLOCAL
popd
)
popd
)
popd
GOTO :EOF
两个问题 - 第二个endlocal
需要移动,以便与相应的setlocal
和cd
更改目录的嵌套级别匹配,但这些目录更改不< / strong>由endlocal
AFAII退出。使用pushd/popd
可确保正确进展。