Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   переименовать файлы из списка txt (http://forum.oszone.net/showthread.php?t=337693)

lovator 14-11-2018 16:19 2840725

переименовать файлы из списка 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

Казбек 14-11-2018 16:44 2840735

lovator,

Немого не в тему по способу реализации, но по цели подойдет, думаю. Попробуйте утилиту и соответствующую функцию How to rename files using a list of new names in Excel file

megaloman 14-11-2018 20:32 2840760

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

Цитата:

Цитата lovator
не имеет значения какие будут предпоследние 2-ве цифры.
желательно чтобы
P_684449914FM.JPG был 6844499-14-34_1.JPG
P_684449914TM.JPG был 6844499-14-34_2.JPG »

Не учитывал, не понимаю,в чём логика нумерации? А как насчёт файлов D1 и D2 ?

Busla 14-11-2018 21:17 2840774

lovator, берем первую (или последнюю) строку из txt, а все jpg переименовываем по принципу эта строка файла + счётчик?

alpap 15-11-2018 16:38 2840916

Код:

@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 2840948

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

Кто-то из нас накосячил :)
Для создания тестовых файлов использовал батник я.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


alpap 15-11-2018 23:22 2840977

megaloman,
8834156-12-L
...
предполагал что в другом txt (значит невнимательно прочитал), иначе, но если это важно (посмотрим что ТС скажет) конечно, то в моем коде такое конечно не учитывалось и под такой txt надо дорабатывать (переделывать).

alpap 15-11-2018 23:59 2840979

переделал
Код:

@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



Время: 23:11.

Время: 23:11.
© OSzone.net 2001-