powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Windows [игнор отключен] [закрыт для гостей] / CMD/BAT маска имени файла в цикле FOR
8 сообщений из 8, страница 1 из 1
CMD/BAT маска имени файла в цикле FOR
    #39597632
Denis_Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Занимаюсь обработкой графических файлов с помощью консольного утилита ImageMagick таким образом:

Код: sql
1.
2.
3.
4.
5.
6.
@echo off
set work_dir=p:\foto\2
 
for /r %work_dir% %%t in (*.jpg) do ( 
convert "%%t" -resize @10000 -depth 8 -quality 50 "%%~dpnt".jpg_ && del "%%~dpnt".jpg
)



Берутся файлы из каталога и всех подкаталогов, происходит их обработка, после чего новый файл сохраняется с новым расширением(к расширению добавляется символ "_" - это принципиально важный момент в моем случае), а старый файл удаляется.
Проблема в маске расширения файла *.jpg.
Под нее попадают уже обработанные файлы с расширением jpg_. Т.е. файлы, которые уже обработаны, обрабатываются повторно, а мне этого не надо. Подскажите, как задать маску, чтобы под нее попадали файлы строго с расширением jpg.
...
Рейтинг: 0 / 0
CMD/BAT маска имени файла в цикле FOR
    #39597641
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маска проверяется как для длинного, так и для короткого имени файла. Четырёхбуквенное
расширение с подчёркиванием на конце в этом свете - плохая идея.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
CMD/BAT маска имени файла в цикле FOR
    #39597904
Alien99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis_Kuznetsov,

А если попробовать применить знаки ? Типа *.jp?
...
Рейтинг: 0 / 0
CMD/BAT маска имени файла в цикле FOR
    #39597972
Denis_Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alien99, с такой маской вообще не происходит обработка файлов
...
Рейтинг: 0 / 0
CMD/BAT маска имени файла в цикле FOR
    #39597985
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эту конструкцию можно заменить командой ввода вывода DIR и объединить её с FINDSTR если надо фильтрануть более детально
DIR /s /b /a вернёт рекурсивный список файлов с полным путём разделенным переносом строки, по этому через FOR её будет легко обработать, а прикрутив FINDSTR можно задать какой угодно фильтр на базе REGEX.

попробуйте вот такое исполнение
Код: powershell
1.
FOR /F "delims=" %i IN ('"dir C:\*.jpg /s /a /b | findstr /R ^.*[^^_]$"') DO @echo %i
...
Рейтинг: 0 / 0
CMD/BAT маска имени файла в цикле FOR
    #39597987
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
либо как вариант, предварительно выполните инструкцию DIR и перенаправьте результаты в файл, потом пробегитесь по файлу, тогда новые файлы не будут попадать в обработку.
...
Рейтинг: 0 / 0
CMD/BAT маска имени файла в цикле FOR
    #39598083
Denis_Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, спасибо большое, помогло.
Остался один маленький вопрос: почему в маске [^^_], а не [^_]?

Roman Mejtesэту конструкцию можно заменить командой ввода вывода DIR и объединить её с FINDSTR если надо фильтрануть более детально
DIR /s /b /a вернёт рекурсивный список файлов с полным путём разделенным переносом строки, по этому через FOR её будет легко обработать, а прикрутив FINDSTR можно задать какой угодно фильтр на базе REGEX.

попробуйте вот такое исполнение
Код: powershell
1.
FOR /F "delims=" %i IN ('"dir C:\*.jpg /s /a /b | findstr /R ^.*[^^_]$"') DO @echo %i
...
Рейтинг: 0 / 0
CMD/BAT маска имени файла в цикле FOR
    #39598089
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis_KuznetsovRoman Mejtes, спасибо большое, помогло.
Остался один маленький вопрос: почему в маске [^^_], а не [^_]?
Я сам не пойму, изначально я тоже написал [^_], но вместо отрицания мне возвращались файлы именно с окончанием "_" :) Возможно это какая то бага FINDSTR
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / CMD/BAT маска имени файла в цикле FOR
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]