Windows 使用批处理脚本递归重命名文件夹中的文件和子文件夹

Windows 使用批处理脚本递归重命名文件夹中的文件和子文件夹,windows,batch-file,for-loop,Windows,Batch File,For Loop,我知道也有类似的帖子,但不包括我需要的。 我需要重命名给定文件夹的所有文件和子文件夹,并使其大写。我发现这篇文章非常棒,但它只包含文件或子文件夹: 我试着做嵌套式的工作,但毫无乐趣。根据手册,/R应该在文件夹中重复出现,但它没有做任何事情。尝试了/D/R,但也没有运气。因此,我希望使用如下内容: @echo off setlocal enableDelayedExpansion pushd C:\MyFolder for /R /D %%f in (*) do ( set "file

我知道也有类似的帖子,但不包括我需要的。 我需要重命名给定文件夹的所有文件和子文件夹,并使其大写。我发现这篇文章非常棒,但它只包含文件或子文件夹:

我试着做嵌套式的工作,但毫无乐趣。根据手册,/R应该在文件夹中重复出现,但它没有做任何事情。尝试了/D/R,但也没有运气。因此,我希望使用如下内容:

@echo off
setlocal enableDelayedExpansion

pushd C:\MyFolder

for /R /D %%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

有什么想法吗?

解析一个静态列表
dir/B/S*
以获取所有文件和子文件夹

阅读整个
以获取/?
以获取
%%~nxf
说明

@echo off
setlocal enableDelayedExpansion

pushd C:\MyFolder

for /F "delims=" %%f in ('dir /B /S *') do (
   set "filename=%%~nxf"

   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
)
popd
endlocal
阅读
ren/?

Renames a file or files.

RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

Note that you cannot specify a new drive or path for your destination file.

这真漂亮!工作起来很有魅力。。。我确实想过要打印列表,但后来却陷入了解析的困境!