使用BATCH递归重命名给定目录中的文件和文件夹
问题描述:
我试图递归地将给定目录中的所有文件和文件夹重命名为当前命名的任何大写版本。潜伏已经让我走得这么远:使用BATCH递归重命名给定目录中的文件和文件夹
@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
但是,它似乎并没有递归地工作。有关如何解决此问题的任何建议?
答
变化
for %%f in (*) do (
set "filename=%%~f"
到
for /r %%f in (*) do (
set "filename=%%~nxf"
遍历整个树,并简单地分配名和扩展名的%%f
到filename
。
注意
for /r "F:\" %%f in (*) do (
将开始在引用目录名搜索。
确定,所以整个代码,看起来像 “关闭@echo SETLOCAL enableDelayedExpansion 用于/ R F:\ %% F IN(*)做( 集 “文件名= %%〜NXF” (%% A)(%% A)( ) ) ) ENDLOCAL” – GentlemanS