Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - пакетное конвертирование с регулярными выражениями

Ответить
Настройки темы
CMD/BAT - пакетное конвертирование с регулярными выражениями

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток.
Помогите дописать скрипт
Задача:
Имеется папка с jpg файлами. Названия всех файлов являются либо числами, либо в формате 5(1).jpg, 5(2).jpg, 5(3).jpg, 12(1).jpg, 12(2).jpg, 12(3).jpg, 12(4).jpg и т.д. Максимальное значение числа в скобках 9.
Есть программка IrfanView позволяющая из командной строки слить несколько файлов jpg в один tiff.
Команда будет выглядеть так
i_view32.exe /multitif=(Название_tiff_файла,первый_jpg_файл,второй_jpg_файл,третий_jpg_файл,...,N_jpg_файл)

Необходимо сделать bat-ник который проходил бы по всем названиям файлов в папке и делал из файлов 5(1).jpg, 5(2).jpg, 5(3).jpg один файл 5.tiff и дальше по аналогии.
Батник будет запускаться из папки с jpg-ами

Я тут попробовал набросать скрипт, но он почему то не работает. Подозреваю что это из-за проблемы раннего связывания, но два дня чтения справочника по командной строке результатов не дали.


Логика такова:
в переменную var пишется название текущего файла из цикла, потом отбрасываются последние 4 символа (расширение), потом последние 3 символа сравниваются с (1), и если совпало - в переменную var1 пишется часть названия первого файла до скобок (то есть в случае если файл называется 5(1).jpg в переменную должно записаться 5). Если всё это произошло, вложенный цикл заново пробегает все файлы и ищет файл, у которого часть названия до скобок равна Var1. Если находит - записывает его название (вместе со скобками) в Var2 и идёт на следующий вложенный цикл искать. И так до (9).
На оптимизацию скорости выполнения можно положить, главное чтобы работало.

Вот мой скрипт. Поправьте его пожалуйста, сроки горят

for %%a in (*) do (

set var=%%a
set var=%var:~0,-4%
if %var:~-3%==(1) do set var1=%var:~0,-3% (

for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var2=var
for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var3=var
for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var4=var
for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var5=var
for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var6=var
for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var7=var
for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var8=var
for %%a in(*) do (

if %var:~0,-3%==var1 do (

set var9=var
for %%a in(*) do
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)

i_view32.exe /multitif=(var1+".tif",var2+".jpg",var3+".jpg",var4+".jpg",var5+".jpg",var6+".jpg",var7+".jpg",var8+" .jpg",var9+".jpg")
)
pause

Отправлено: 10:45, 04-12-2010

 

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое за помощь

Отправлено: 17:58, 04-12-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


А подскажите, если файлы будут не 5(1).jpg, 5(2).jpg .... а 5.jpg, 5 001.jpg, 5 002.jpg.... как надо изменить последний скрипт чтобы всё так же работало?

Отправлено: 16:07, 05-12-2010 | #12


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


5[пробел]00x.jpg ? Другие пробелы в имени могут быть? Цифр 00x вегда 3?

Отправлено: 16:40, 05-12-2010 | #13


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


не могут быть.
да всегда три, но в каждой группе есть файл и без цифр, то есть 5.jpg, 6.jpg а к ним уже 5 001.jpg, 5 002.jpg и т.п.

Отправлено: 16:42, 05-12-2010 | #14


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
for /f "delims= " %%f in ('dir /b "* 001.jpg"') do (

set "$num="
for /f "delims=" %%n in ('dir /b "%%f.jpg" "%%f ???.jpg"') do (call set "$num=%%$num%%,%%n")
call I_view32.exe "/multitif=(%%f.tif%%$num%%)" /killmesoftly
del /q "%%f.jpg" "%%f ???.jpg"
)
Запакует файлы не только с цифрами, но с буквами 5 abc.jpg, 5 def.jpg ...

Отправлено: 17:02, 05-12-2010 | #15


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


просто красавчик ))
спасбио большое

Отправлено: 17:06, 05-12-2010 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - пакетное конвертирование с регулярными выражениями

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Пакетное переименование файлов ArsenBespalov Скриптовые языки администрирования Windows 9 11-08-2016 03:56
[решено] Пакетное переименование ярлыков SimSim Хочу все знать 9 24-10-2012 10:44
CMD/BAT - [решено] Пакетное преобразование данных с помощью cmd Tosyk Скриптовые языки администрирования Windows 22 26-11-2010 14:13
CMD/BAT - [решено] Пакетное переименование с использованием алфавитного счётчика kotik147 Скриптовые языки администрирования Windows 6 13-05-2010 00:03
Помогите разобраться с регулярными выражениями pingUIN Хочу все знать 2 31-01-2007 12:26




 
Переход