У меня есть много папок в каталоге, которые мне нужно переименовать с фиксированным базовым именем и прогрессивным числом от 1 до бесконечности.
Путь к папкам имеет место, а базовая папка - D: \ Programmi Installati.
Пример папок для переименования:
log_1
log_2
log_04-01-2019 15-15-11,51
log_01-01-2019 8-22-14,19
log_27-12-2018 14-23-18,28
log_aaaa
log_bbbb
log_5
log_6
log_02-01-2019 6-21-17,34
log_03-01-2019 21-18-16,22
Пример имен требуемых папок:
log_1
log_2
log_3
log_4
log_5
log_6
log_7
log_8
log_9
log_10
log_11
log_12
Номера папок для переименования могут быть большими, но структура такая же.
Я попробовал больше командного файла, но все не удалось, когда есть некоторые папки с нужным именем (например, log_5 или log_1)
Порядок не важен, важно, чтобы все папки, начинающиеся с «log», были переименованы с инкурентным номером.
Код уже опробован без успеха
:: 1 code
@echo off
setlocal enabledelayedexpansion
set counter=
for /d %%a in ("D:\Programmi Installati\log_*") do (
set /a counter+=1
ren "%%~fa" "log_!counter!"
)
pause
:: 2 code
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "Counter=1"
for /F "delims=" %%I in ('dir "D:\Programmi Installati\log*" /AD /B /ON 2^>nul') do ren "D:\Programmi Installati\%%I" "log_!Counter!" & set /A Counter+=1
endlocal
pause
:: 3 code
@ECHO OFF
@setlocal enabledelayedexpansion
Rem | Folder Path & CD To Location
Set "Folder=D:\Programmi Installati\"
CD %Folder%
Rem | Get Raw File Name
Set "Number=1"
for /F "tokens=*" %%A in ('dir "log*" /S /b /AD') do (
Rem | Rename Folder || Raw Name - %%~n1
rename "%%~nA" "log_!Number!"
Rem | Add One To Number
set /a "number+=1"
)
Goto :EOF
PAUSE
Код работает, только если в каталоге нет нужного имени каталога, иначе не переименовывайте папки.