使用BATCH递归重命名给定目录中的文件和文件夹

时间:2016-01-21 15:13:29

标签: batch-file recursion

我尝试递归地将给定目录中的所有文件和文件夹重命名为当前命名的大写版本。 Lurking让我走到了这一步:

@echo off
setlocal enableDelayedExpansion

pushd F:\

for %%f in (*) do (
   set "filename=%%~f"

   for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
      set "filename=!filename:%%A=%%A!"
   )
    ren "%%f" "!filename!" >nul 2>&1
)
endlocal

然而,它似乎并不是递归地工作。有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:2)

变化

for %%f in (*) do (
   set "filename=%%~f"

for /r %%f in (*) do (
   set "filename=%%~nxf"

遍历整个树,并将%%f的名称和扩展名分配给filename

请注意

for /r "F:\" %%f in (*) do (

将以引用的目录名开始搜索。