Показать полную графическую версию : переименовать файлы из списка txt
Добрый день ,
помогите пожалуйста со скриптом
у меня есть много файлов в одной папке , пример
P_684449914FM.JPG
P_684449914TM.JPG
P_684449914D1.JPG
P_684449914D2.JPG
и есть txt со следующим содержанием текста
6844499-14-44
6844499-14-42
6844499-14-40
6844499-14-38
6844499-14-36
6844499-14-34
и нужно чтобы этих 4-ре файла переименовались в :
6844499-14-34_1.JPG
6844499-14-34_2.JPG
6844499-14-34_3.JPG
6844499-14-34_4.JPG
или
6844499-14-44_1.JPG
6844499-14-44_2.JPG
6844499-14-44_3.JPG
6844499-14-44_4.JPG
не имеет значения какие будут предпоследние 2-ве цифры.
желательно чтобы
P_684449914FM.JPG был 6844499-14-34_1.JPG
P_684449914TM.JPG был 6844499-14-34_2.JPG
но в txt могут быть такие записи
8834156-12-L
8834156-12-M
8834156-12-S
8834156-12-XL
8834156-12-XS
и естественно
8834156-12-L_1.JPG
8834156-12-L_2.JPG
8834156-12-L_3.JPG
8834156-12-L_4.JPG
lovator,
Немого не в тему по способу реализации, но по цели подойдет, думаю. Попробуйте утилиту и соответствующую функцию How to rename files using a list of new names in Excel file (http://www.filerenamer.net/filerenamer-help/list-renamer.html)
megaloman
14-11-2018, 20:32
lovator, @Echo Off
Set "BoxIn=Z:\Box_In\Фигейрос"
Set "Mask=*_%%i%%j*.jpg"
Set "Txt=Z:\Box_In\Фигейрос\и есть txt.txt"
FOR /F "usebackq tokens=1,2,3 delims=- " %%i IN ("%Txt%") DO (
Call Set /A N=0
If Exist "%BoxIn%\%Mask%" FOR %%f IN ("%BoxIn%\%Mask%") DO Call :MyRen "%%f" "%%i" "%%j" "%%k"
)
GoTo :Eof
:MyRen
Set /A N+=1
If Exist "%~dp1%~2-%~3-%~4_%N%%~x1" GoTo :MyRen
Ren %1 "%~2-%~3-%~4_%N%%~x1"
GoTo :Eofне имеет значения какие будут предпоследние 2-ве цифры.
желательно чтобы
P_684449914FM.JPG был 6844499-14-34_1.JPG
P_684449914TM.JPG был 6844499-14-34_2.JPG »Не учитывал, не понимаю,в чём логика нумерации? А как насчёт файлов D1 и D2 ?
lovator, берем первую (или последнюю) строку из txt, а все jpg переименовываем по принципу эта строка файла + счётчик?
@echo off
set "d=C:\papka"
set "f=file.txt"
<"%f%" set /p z=
for /f "tokens=1* delims=[]" %%a in ('dir /a-d/b "%d%\*.jpg"^|find /n /v ""') do ren "%d%\%%b" "%z%_%%a%%~xb"
pause
megaloman
15-11-2018, 19:59
alpap, @echo off
set "d=Z:\Box_In\Фигейрос"
set "f=Z:\Box_In\Фигейрос\и есть txt.txt"
<"%f%" set /p z=
for /f "tokens=1* delims=[]" %%a in ('dir /a-d/b "%d%\*.jpg"^|find /n /v ""') do ren "%d%\%%b" "%z%_%%a%%~xb"
pause
Содержимое папки Z:\Box_In\Фигейрос
15.11.2018 19:50 0 aaa
15.11.2018 19:47 19 P_684449914D1.JPG
15.11.2018 19:47 19 P_684449914D2.JPG
15.11.2018 19:47 19 P_684449914FM.JPG
15.11.2018 19:47 19 P_684449914TM.JPG
15.11.2018 19:47 19 P_684449915D1.JPG
15.11.2018 19:47 19 P_684449915D2.JPG
15.11.2018 19:47 19 P_684449915FM.JPG
15.11.2018 19:47 19 P_684449915TM.JPG
15.11.2018 19:47 19 Q_883415612Lu.JPG
15.11.2018 19:47 19 Q_883415612Mu.JPG
15.11.2018 19:47 19 Q_883415612Su.JPG
15.11.2018 19:47 19 Q_883415612XL.JPG
15.11.2018 19:47 19 Q_883415612XS.JPG
15.11.2018 19:47 19 Q_883415613Lu.JPG
15.11.2018 19:47 19 Q_883415613Mu.JPG
15.11.2018 19:47 19 Q_883415613Su.JPG
15.11.2018 19:47 19 Q_883415613XL.JPG
15.11.2018 19:47 19 Q_883415613XS.JPG
15.11.2018 19:46 164 и есть txt.txt
14.11.2018 22:51 780 я.bat
6844499-14-44
6844499-14-42
6844499-14-40
6844499-14-38
6844499-14-36
6844499-14-34
8834156-12-Lui
8834156-12-M
8834156-12-S
8834156-12-XL
8834156-12-XS Содержимое папки Z:\Box_In\Фигейрос
15.11.2018 19:54 19 6844499-14-44_1.JPG
15.11.2018 19:54 19 6844499-14-44_10.JPG
15.11.2018 19:54 19 6844499-14-44_11.JPG
15.11.2018 19:54 19 6844499-14-44_12.JPG
15.11.2018 19:54 19 6844499-14-44_13.JPG
15.11.2018 19:54 19 6844499-14-44_14.JPG
15.11.2018 19:54 19 6844499-14-44_15.JPG
15.11.2018 19:54 19 6844499-14-44_16.JPG
15.11.2018 19:54 19 6844499-14-44_17.JPG
15.11.2018 19:54 19 6844499-14-44_18.JPG
15.11.2018 19:54 19 6844499-14-44_2.JPG
15.11.2018 19:54 19 6844499-14-44_3.JPG
15.11.2018 19:54 19 6844499-14-44_4.JPG
15.11.2018 19:54 19 6844499-14-44_5.JPG
15.11.2018 19:54 19 6844499-14-44_6.JPG
15.11.2018 19:54 19 6844499-14-44_7.JPG
15.11.2018 19:54 19 6844499-14-44_8.JPG
15.11.2018 19:54 19 6844499-14-44_9.JPG
15.11.2018 19:55 0 aaa
15.11.2018 19:52 162 и есть txt.txt
14.11.2018 22:51 780 я.bat
Содержимое папки Z:\Box_In\Фигейрос
15.11.2018 19:56 19 6844499-14-44_1.JPG
15.11.2018 19:56 19 6844499-14-44_2.JPG
15.11.2018 19:56 19 6844499-14-44_3.JPG
15.11.2018 19:56 19 6844499-14-44_4.JPG
15.11.2018 19:56 19 8834156-12-Lui_1.JPG
15.11.2018 19:56 19 8834156-12-Lui_2.JPG
15.11.2018 19:56 19 8834156-12-Lui_3.JPG
15.11.2018 19:56 19 8834156-12-Lui_4.JPG
15.11.2018 19:56 19 8834156-12-Lui_5.JPG
15.11.2018 19:57 0 aaa
15.11.2018 19:56 19 P_684449915D1.JPG
15.11.2018 19:56 19 P_684449915D2.JPG
15.11.2018 19:56 19 P_684449915FM.JPG
15.11.2018 19:56 19 P_684449915TM.JPG
15.11.2018 19:56 19 Q_883415613Lu.JPG
15.11.2018 19:56 19 Q_883415613Mu.JPG
15.11.2018 19:56 19 Q_883415613Su.JPG
15.11.2018 19:56 19 Q_883415613XL.JPG
15.11.2018 19:56 19 Q_883415613XS.JPG
15.11.2018 19:52 162 и есть txt.txt
14.11.2018 22:51 780 я.bat
Кто-то из нас накосячил :)>P_684449914FM.JPG Echo P_684449914FM.JPG
>P_684449914TM.JPG Echo P_684449914TM.JPG
>P_684449914D1.JPG Echo P_684449914D1.JPG
>P_684449914D2.JPG Echo P_684449914D2.JPG
>P_684449915FM.JPG Echo P_684449915FM.JPG
>P_684449915TM.JPG Echo P_684449915TM.JPG
>P_684449915D1.JPG Echo P_684449915D1.JPG
>P_684449915D2.JPG Echo P_684449915D2.JPG
>Q_883415612Lu.JPG Echo Q_883415612Lu.JPG
>Q_883415612Mu.JPG Echo Q_883415612Mu.JPG
>Q_883415612Su.JPG Echo Q_883415612Su.JPG
>Q_883415612XL.JPG Echo Q_883415612XL.JPG
>Q_883415612XS.JPG Echo Q_883415612XS.JPG
>Q_883415613Lu.JPG Echo Q_883415613Lu.JPG
>Q_883415613Mu.JPG Echo Q_883415613Mu.JPG
>Q_883415613Su.JPG Echo Q_883415613Su.JPG
>Q_883415613XL.JPG Echo Q_883415613XL.JPG
>Q_883415613XS.JPG Echo Q_883415613XS.JPG
megaloman,
8834156-12-L
...
предполагал что в другом txt (значит невнимательно прочитал), иначе, но если это важно (посмотрим что ТС скажет) конечно, то в моем коде такое конечно не учитывалось и под такой txt надо дорабатывать (переделывать).
переделал
@echo off
set "d=C:\papka"
set "f=file.txt"
for /f "usebackq tokens=1-3 delims=-" %%a in ("%f%") do set "$_%%a-%%b=%%a-%%b-%%c"
for /f "tokens=3-5 delims==-" %%i in ('set $_') do (
for /f "tokens=1* delims=[]" %%a in ('dir /a-d/b "%d%\*%%i%%j*.jpg"^|find /n /v ""') do ren "%d%\%%b" "%%i-%%j-%%k_%%a%%~xb"
)
pause
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.