|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление подстроки в переменной For R |
|
|
CMD/BAT - [решено] Удаление подстроки в переменной For R
|
Новый участник Сообщения: 9 |
Профиль | Отправить PM | Цитировать
Доброго всем!
Проблема в следующем есть обработка по сжатию JPG файлов, не обработанные файлы складируются в корневую директорию Int2Dir дополнительно могут создаваться произвольные поддиректории. После сжатия файлы складируются в корневую директорию Rsz2Dir включая поддиректории созданные пользователем. Проблема в извлечении имен поддиректорий для последующего их использования. Кто подскажет где я туплю (без поддиректорий работает на ура). ps: для сжатия используется nConvert от XnView (http://www.xnview.com/en/nconvert/) эксплуатация на Windows x32,x64 (xp, 7, 10) echo off Set Int2Dir="c:\NConvert\тест 1" Set Rsz2Dir="c:\NConvert\тест 2" ::Обходим файлы For /R %Int2Dir% %%I In (*.jpg) Do ( ::Извлекаем имена дополнительных директорий set mystr="%%~dpI" set mystr="%mystr:%Int2Dir%=%" ::Сжимаем файлы nconvert -ratio -rtype lanczos -rflag decr -rflag orient -resize 1920 1200 -o "%Rsz2Dir%\%mystr%\__r_%%" "%%~I" ::Удаляем обработанные файлы DEL /F /S /Q /A "%%~I" ) |
|
Отправлено: 09:36, 06-06-2017 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Проблема в следующем (не важно - есть обработка по сжатию JPG файлов,) - поехали:
не обработанные файлы складируются в корневую директорию Int2Dir дополнительно могут создаваться произвольные поддиректории. почему, как, зачем, кем? После сжатия файлы складируются в корневую директорию Rsz2Dir включая поддиректории созданные пользователем. так в корневую или поддиректории или и туда и туда Соответственно - Проблема в извлечении имен поддиректорий, так что именно брать за основу точки поиска? |
Отправлено: 14:38, 06-06-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Вкратце Проблема в извлечении имен поддиректорий, точка отправления Int2Dir, файлы и в корне и в под директориях.
Детально Int2Dir неизменна, в ней пользователи создают произвольные директории с комбинацией цифр пробелов и русских символов (вариантов очень много, так что к ним привязываться нет смысла). Далее обработанный файл включая созданную пользователем директорию (возможно и вложенную директорию, до 3х уровней вложения) нужно переместить в Rsz2Dir для дальнейших обработок. Если файлы не классифицированы пользователь скинет их в корень Int2Dir без создания доп директорий. |
Последний раз редактировалось nexochyka, 07-06-2017 в 08:41. Отправлено: 19:53, 06-06-2017 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата nexochyka:
Цитата nexochyka:
теоретически можно вытащить именно имена, но во-первых может быть и совпадение, а даже если и нет, какой смысл вот так будут выведены полные пути всех папок и подпапок директории "Int2Dir": если убрать ключ /s - будут выводиться только имена папок, находящихся в анализируемой или текущей, если bat в ней, можно вместо имени директории поставить "%~1" и перетягивать нужную папку на bat, будете наблюдать на экране имена папок первого уровня этой директории Да. Код сохранить в кодировке 866 (меньше проблем с русскими именами и путями) И под Цитата nexochyka:
|
|||
Последний раз редактировалось alpap, 07-06-2017 в 09:33. Отправлено: 09:27, 07-06-2017 | #4 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Ну что ж...
Ваш пример ... крайне далек от поставленной задачи. И ваша фраза: Цитата alpap:
С целью исключения детской переписки где каждый пытается показать себя грамотеем и предложить вариант из своей шкатулки я вставил кусок рабочего кода с фрагментом который необходимо модернизировать, о чем детально изложил. Цитата nexochyka:
Но все равно спасибо за проявленный интерес. Проблема не решена. Цитата alpap:
В настоящий момент складирование осуществляется в единую папку (гггг/мм/дд) разделение осуществляется по имени файла (гмд_чмс_имяфайла_пользователь) на основании информации из exif, после чего недостающие директории создаются ручками. |
||||
Последний раз редактировалось nexochyka, 07-06-2017 в 13:16. Причина: Разьяснение Отправлено: 12:23, 07-06-2017 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать nexochyka,
Рискую нарваться на Ваш праведный гнев :)
@Echo OFF cls Set "BoxIn=Z:\Box_In\CMD" Set "BoxOut=Z:\Box_Out\Kuku" Set "Mask=*.js" FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%Mask%" /S /B /A:-D 2^>nul`) DO Call :Work "%%f" "%%~dpf" GoTo :Eof :Work Set "PathIn=%~2" Call Set "PathOut=%%PathIn:%BoxIn%=%BoxOut%%%" Echo %1 Echo %PathIn% Echo %PathOut% pause GoTo :Eof If Not Exist "%PathOut%" Md "%PathOut%" |
------- Последний раз редактировалось megaloman, 07-06-2017 в 14:52. Отправлено: 14:46, 07-06-2017 | #6 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать megaloman, благодарю, совсем забыл про необходимость выноса set из цикла for.
|
Отправлено: 21:21, 07-06-2017 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать nexochyka,
Цитата nexochyka:
Не обязательно
@Echo OFF cls Set "BoxIn=Z:\Box_In\CMD" Set "BoxOut=Z:\Box_Out\Kuku" Set "Mask=*.js" SetLocal EnableExtensions EnableDelayedExpansion FOR /R "%BoxIn%" %%f IN ("%Mask%") DO ( Set "FileIn=%%f" Set "PathIn=%%~dpf" Call Set "FileOut=%%FileIn:%BoxIn%=%BoxOut%%%" Call Set "PathOut=%%PathIn:%BoxIn%=%BoxOut%%%" Echo: Echo !FileIn! Echo !FileOut! Echo: Echo !PathIn! Echo !PathOut! Echo: Pause ) GoTo :Eof |
|
------- Последний раз редактировалось megaloman, 08-06-2017 в 11:55. Отправлено: 11:49, 08-06-2017 | #8 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Можно по подробнее про:
SetLocal EnableExtensions EnableDelayedExpansion |
Отправлено: 12:06, 08-06-2017 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать nexochyka, Читаем хелп после выполнения команды SetLocal /?
Можно посмотреть тут. |
------- Отправлено: 12:22, 08-06-2017 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. | NiOl | Скриптовые языки администрирования Windows | 7 | 31-01-2019 19:58 | |
CMD/BAT - [решено] Сравнение переменной цикла со строковой переменной | NickM | Скриптовые языки администрирования Windows | 2 | 17-01-2017 10:28 | |
VBS/WSH/JS - [решено] Поиск подстроки в файле с последующей заменой подстроки (многопользовательский досту) | pogo | Скриптовые языки администрирования Windows | 12 | 06-12-2013 17:59 | |
CMD/BAT - [решено] В переменной содержится имя переменной | opravdin | Скриптовые языки администрирования Windows | 3 | 28-01-2013 11:11 | |
CMD/BAT - [решено] Удаление строк в файле, начинающихся с переменной | 2ooth | Скриптовые языки администрирования Windows | 3 | 31-08-2011 13:44 |
|