Массовое переименование с помощью пакетного файла строчных и прописных букв с подчеркиванием в папках и подпапках - PullRequest
0 голосов
/ 21 октября 2019

Заранее спасибо, что сосредоточились на этой проблеме. Я собрал код из разных потоков и создал что-то похожее на приведенное ниже. Я пытаюсь создать пакетный файл с этим кодом для запуска в моей папке загрузки и ее подпапках и дополнительных подпапках в каждой из них. Если имена файлов содержат 1. Подчеркнуть, "_" переименование должно измениться на дефис "-", 2. Двойное подчеркивание, "__" на дефис "-" также, 3. Строчные буквы, "abcdefgh ..." вимя будет переименовано в верхний регистр, "ABCDEFGH ..."

Этот код также переименовывает имена файлов в верхние регистры в подпапках, но остальная часть кода не переименовывается в подпапках. Как я могу сделать это функциональным?

@echo off
setlocal enableDelayedExpansion

:: Changes to a directory and saves the previous directory to go back to
pushd C:\Users\XXXXXXXXX\Downloads\

:: Critical that you USE this instead of a normal FOR command.
:: A normal FOR command may attempt to rename a file twice.
for /F "delims=" %%f in ('dir /B /S /E /C *') 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
)
for %%a in (*_*) do (
for /F "delims=" %%f in ('dir /B /S /E /C *') do (
set file=%%a
ren "!file!" "!file:_=-!"
)
)
for %%a in (*__*) do (
for /F "delims=" %%f in ('dir /B /S /E /C *') do (
set file=%%a
ren "!file!" "!file:__=-!"
)

:: Goes back to the previous directory.
popd
endlocal
...