Здравствуйте. Есть такие файлы:
kniga-0001.txt
kniga-0001.jpg
kniga-0002.txt
kniga-0002.jpg
kniga-0003.txt
kniga-0003.jpg
jurnal-0001.txt
jurnal-0001.jpg
jurnal-0002.txt
jurnal-0002.jpg
jurnal-0004.txt
jurnal-0004.jpg
и т.д. Т.е. есть пара файлов jpg и txt, в текстовом файле первой строкой идет полное имя jpg файла + комментарий после символа @ (всё в первой строке, комментария может и не быть).
Задача: нужно из каждого txt файла прочитать первую строку до символа @ (которого может и не быть) и переименовать jpg файл в этот текст.
Некоторые полные имена (первая строка до @) могут быть длиннее 255 символов, можно отсекать все, что длиннее, допустим, 150 символов (с запасом на длину пути), добавляя многоточие "...".
Пример 1:
kniga-0001.txt
Ostrov sokrovish. R. Stivenson@prikluchenia_pirati_morskaya_tema
Avtor: R.Stivenson
Data: 1882
Yazik: Russkiy
Нужно переименовать файл "kniga-0001.jpg" в "Ostrov sokrovish. R. Stivenson.jpg".
Пример 2:
kniga-0002.txt
Diktator. S. Snegov
Avtor: Sergei Snegov
Zhanr: Fantastika
Нужно переименовать файл "kniga-0002.jpg" в "Diktator. S. Snegov.jpg".
Заранее спасибо!
CMD/BAT - [решено] Переименовать jpg файлы, взяв имя из первой строки соответствующего одноименного txt
-
Iska
Re: CMD/BAT - [решено] Переименовать jpg файлы, взяв имя из первой строки соответствующего одноименного txt
Цитата use809:
в текстовом файле…
Упакуйте образец текстового файла в архив и приложите к сообщению.
в текстовом файле…
CMD/BAT - [решено] Переименовать jpg файлы, взяв имя из первой строки соответствующего одноименного txt
Упакуйте образец текстового файла в архив и приложите к сообщению.
-
megaloman
Re: CMD/BAT - [решено] Переименовать jpg файлы, взяв имя из первой строки соответствующего одноименного txt
Код:
Код: Выделить всё
@Echo Off
cls
Chcp 1251 >nul
Set "BoxIn=Z:\Box_In"
Set "Ext1=jpg"
Set "Ext2=txt"
Set /A Len=150
Set "Big=..."
Set "Delim=@"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\*.%Ext1%" /B /A:-D 2^>nul`) DO (
If Exist "%BoxIn%\%%~nf.%Ext2%" Call :First "%BoxIn%\%%~nf.%Ext2%" "%BoxIn%\%%f"
)
GoTo :Eof
:First
Set "NName= "
FOR /F "usebackq tokens=1 delims=%Delim%" %%n IN (%1) DO Set "NName=%%n" &GoTo :Continue
:Continue
If "%NName: =%"=="" GoTo :Eof
Call Set "NNo=%%NName:~%Len%,1%%"
Call Set "NName=%%NName:~0,%Len%%%"
If Not "%NNo%"=="" Set "NName=%NName%%Big%"
Move /Y %2 "%~dp2%NName%%~x2" >nul
GoTo :Eof-
use809
Re: CMD/BAT - [решено] Переименовать jpg файлы, взяв имя из первой строки соответствующего одноименного txt
Благодарю! Работает как надо.