Добрый вечер!
Имеется софтина, генерирующая логи с названиями в формате AAAABBBBCCCC.log, где АААА и СССС - постоянные в данной папке части (СССС может вообще отсутствовать), BBBB - переменная часть, и её длина может варьироваться.
Примеры:
- папка А: modem1234.log, modem1344.log, modem4321.log, modemqwer.log...
- папка B: tempTTYaa.log, tempTRTaa.log, tempHHJaa.log, tempXXXaa.log...
- папка C: nco12bbb.log, nco1234bbb.log, nco123bbb.log...
В каждой папке может быть несколько тысяч файлов.
Требуется в каждой папке переименовать логи так, чтобы в названии осталась только переменная часть, т. е.:
- папка А: 1234.log, 1344.log, 4321.log, qwer.log...
- папка B: TTY.log, TRT.log, HHJ.log, XXX.log...
- папка C: 12.log, 1234.log, 123.log...
За один раз обрабатывается одна папка.
Можно ли сделать универсальный скрипт на все 3 типа имён, или сильно проще для каждого свой?
Прошу помощи.
CMD/BAT - Переименование файлов
-
Georgio
Re: CMD/BAT - Переименование файлов
Цитата Verilog:
Можно ли сделать универсальный скрипт на все 3 типа имён ?
Код:
Можно ли сделать универсальный скрипт на все 3 типа имён ?
CMD/BAT - Переименование файлов
Код:
Код: Выделить всё
@echo off
setlocal enableextensions enabledelayedexpansion
>nul chcp 1251
set "dir=D:\Test\Папка Z"
set const_1="modem" "temp" "nco"
set const_2="aa" "bbb"
>nul chcp 866
pushd "%dir%"
for /f "delims=" %%i in ('dir /a-d/b') do (
set x=%%i
for %%j in (%const_1%) do (
set x=!x:*%%~j=!
)
for %%j in (%const_2%) do (
set x=!x:%%~j%%~xi=!
)
ren "%%i" "!x:%%~xi=!%%~xi"
)
popd
endlocal
exit /b-
Verilog
Re: CMD/BAT - Переименование файлов
Спасибо, Georgio!
Но под универсальностью я понимал двухпроходный алгоритм, где сначала выявляются постоянные и переменная части, а уже затем, на основе результатов анализа, выполняется переименование, ибо просматривать множество файлов и определять эти части на глаз весьма утомительно. Приведённые мной примеры сильно упрощены для облегчения понимания сути, реальные имена длинные (30-40 символов) и содержат информацию о текущей конфигурации оборудования (название папки содержит примерно ту же информацию, но в расширенном виде, поэтому её дублирование в именах файлов избыточно), т. е. возможных сочетаний для частей AAAA и CCCC - великое множество. Поэтому и хотелось бы, чтобы скрипт определял их сам. Обрабатывать все папки (их значительно больше трёх) за раз не требуется, работаем только с текущей папкой.
Но под универсальностью я понимал двухпроходный алгоритм, где сначала выявляются постоянные и переменная части, а уже затем, на основе результатов анализа, выполняется переименование, ибо просматривать множество файлов и определять эти части на глаз весьма утомительно. Приведённые мной примеры сильно упрощены для облегчения понимания сути, реальные имена длинные (30-40 символов) и содержат информацию о текущей конфигурации оборудования (название папки содержит примерно ту же информацию, но в расширенном виде, поэтому её дублирование в именах файлов избыточно), т. е. возможных сочетаний для частей AAAA и CCCC - великое множество. Поэтому и хотелось бы, чтобы скрипт определял их сам. Обрабатывать все папки (их значительно больше трёх) за раз не требуется, работаем только с текущей папкой.
-
Georgio