Batch file 使用批处理递归重命名给定目录中的文件和文件夹
我正在尝试递归地将给定目录中的所有文件和文件夹重命名为当前名称的大写版本。潜伏让我走了这么远:Batch file 使用批处理递归重命名给定目录中的文件和文件夹,batch-file,recursion,Batch File,Recursion,我正在尝试递归地将给定目录中的所有文件和文件夹重命名为当前名称的大写版本。潜伏让我走了这么远: @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:%
@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"
到
它遍历整个树并将%%f
的名称和扩展名简单地分配给文件名
注意
for /r "F:\" %%f in (*) do (
将在引用的目录名处开始搜索。更改
for %%f in (*) do (
set "filename=%%~f"
到
它遍历整个树并将%%f
的名称和扩展名简单地分配给文件名
注意
for /r "F:\" %%f in (*) do (
将在引用的目录名处开始搜索。确定,因此整个代码看起来像“@echo off setlocal enableDelayedExpansion for/rf:\%%F in(*)do(为%%A in(A B C D E F G H I J K L M N O p Q r S T U W X Y Z)do(设置“filename=!filename:%%A=%%A!”)ren ren%%F”“!filename!”>nul 2>&1)endlocal’好的,所以整个代码看起来像“@echo off setlocal enableDelayedExpansion for/rf:\%%F in(*)do(在(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”