2017-05-16 83 views
0

我知道有類似的帖子,但沒有涵蓋我需要的東西。 我需要重命名給定文件夾中的所有文件和子文件夾,並將它們設爲大寫。我發現這個職位是偉大的,但只做了文件或子文件夾:使用批處理腳本遞歸地重命名文件夾和子文件夾

Rename all files in folder to uppercase with batch

我想這樣做嵌套對於沒有喜悅。根據手冊,/ 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 

任何想法?

回答

0

解析靜態列表dir /B /S *以獲取所有文件子文件夾。

對於%%~nxf的解釋,請閱讀完整for /?

@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. 
+0

這是美麗的!像魅力一樣工作......我確實想過打印列表,但後來被困在解析它們! – DoctorB

相關問題