我尝试递归地将给定目录中的所有文件和文件夹重命名为当前命名的大写版本。 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
然而,它似乎并不是递归地工作。有关如何解决此问题的任何建议?
答案 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 (
将以引用的目录名开始搜索。