2016-01-21 9 views
0

Я пытаюсь рекурсивно переименовать все файлы и папки в данном каталоге в прописную версию того, что в настоящее время названо. Lurking получил меня так далеко:Рекурсивное переименование файлов и папок в данном каталоге с 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" 

который проходит по всему дереву и присваивает просто имя и расширение %%f к filename.

Обратите внимание, что

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

начнет поиск в процитированном DirectoryName.

+0

ИТАК весь код, будет выглядеть «@echo от SETLOCAL enableDelayedExpansion для/г F: \ %% е в (*) делать ( набора "имя_файл = %% ~ nxf" для %% А в (ABCDEFGHIJKLMNOPQRSTU VWXYZ) делать ( набора "имя файл = имя файла:! %% A = %% A" ) жэни "%% F" "имя файл"> NUL 2> & 1 ) ! Endlocal» – GentlemanS

Смежные вопросы