重命名/删除嵌套Foldernames的特定字符数

时间:2017-07-07 19:44:55

标签: loops batch-file rename

文件夹布局就像:

  • 根\ folder1a \ subfolder2a \ randommmsubfolder3a

  • 根\ folder1b \ subfolder2b \ randommmsubfolder3b

  • 根\ folder1c \ subfolder2c \ randommmsubfolder3c

我想删除/删除第三级深层文件夹名称的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
)))

1 个答案:

答案 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需要移动,以便与相应的setlocalcd更改目录的嵌套级别匹配,但这些目录更改不< / strong>由endlocal AFAII退出。使用pushd/popd可确保正确进展。