2016-01-21 184 views
0

我试图递归地将给定目录中的所有文件和文件夹重命名为当前命名的任何大写版本。潜伏已经让我走得这么远:使用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 

但是,它似乎并没有递归地工作。有关如何解决此问题的任何建议?

回答

2

变化

for %%f in (*) do (
    set "filename=%%~f" 

for /r %%f in (*) do (
    set "filename=%%~nxf" 

遍历整个树,并简单地分配名和扩展名的%%ffilename

注意

for /r "F:\" %%f in (*) do (

将开始在引用目录名搜索。

+0

确定,所以整个代码,看起来像 “关闭@echo SETLOCAL enableDelayedExpansion 用于/ R F:\ %% F IN(*)做( 集 “文件名= %%〜NXF” (%% A)(%% A)( ) ) ) ENDLOCAL” – GentlemanS