我知道有类似的帖子,但没有涵盖我需要的内容。我需要重命名给定文件夹的所有文件和子文件夹并将它们大写。我发现这篇文章很棒,但只做文件或子文件夹:
使用批处理将文件夹中的所有文件重命名为大写
我尝试做嵌套 FOR 没有快乐。根据手册,/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 *
以获取所有文件和子文件夹。
阅读整for /?
以获取%%~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.