![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#341 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Тогда пришлите текст bat файла еще раз и на этот раз используйте теги [CODE][/CODE]
В принципе из всего текста можно оставить только эти строчки и все должно работать как надо Код:
Последний раз редактировалось macomics; 21.08.2022 в 15:15. |
![]() |
![]() |
![]() |
#342 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,624
|
![]()
Массовая замена оригиналов фото копиями после сохранения в Photoshop
В последних версиях Adobe Photoshop есть такой прикол, что при сохранении отредактированного фото, фотошоп сам добавляет к имени файла слово "копия" (для русской версии). Можно, конечно, при сохранении каждый раз вручную менять имя файла и соглашаться с диалогом перезаписи оригинального файла на отредактированный, но это лишние действия. Проще этот процесс автоматизировать. Для этого сохраняем отредактированные фото с тем именем, что предлагает сам Photoshop (то есть как копии). В итоге в папке у нас будут лежать и оригинальные фото, и фото после редактирования. Примерно так: 1.jpg Можно, конечно, вручную удалить все оригиналы, а затем переименовать все копии, убрав из имени файла слово "копия". Но это не наш метод. Вот простенький командный файл, который эту работу выполняет самостоятельно: Код:
Если у вас не русифицированный фотошоп, то меняем значение переменной set copy=копия на нужное. После запуска этого батника, он находит все файлы .jpg, в имени которых присутствует слово "копия", удаляет оригинал, если тот имеется, и копию переименовывает, убирая слово "копия" из имени файла. Результат работы: 2.jpg Обратите внимание! После работы данного скрипта, все оригинальные фото будут уничтожены. Если они вам нужны, сохраните их отдельно. E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 22.08.2022 в 11:41. |
![]() |
![]() |
![]() |
#343 |
Регистрация: 19.02.2024
Сообщений: 7
|
![]()
А могу я здесь задать вопрос про свой батник?
Кратко так: проблемка в FOR /F игнорирует символ "!" в имени каталога. Заменять динамически -- не вариант. Использовать другие средства -- не совет. Win7 |
![]() |
![]() |
![]() |
#344 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,624
|
![]()
exp98, приведите код целиком. Но, подозреваю, может помочь экранирование, то есть вместо ! надо записать ^!
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#345 |
Регистрация: 19.02.2024
Сообщений: 7
|
![]()
Arigato, ох! погодите.
сегодня вообще непонятное происходит, с проблемой пробелов всё начиналось. Боролся 2 дня, думал, что навсегда победил, и остался пустяк. Сейчас решил сперва попробовать, и сразу мочала-сначала -- те же пробелы. Разбираюсь пока. Такое впечатление, что моему "CMD /A" нужно сначала прогреться. Там не только с пробелами, вообще Set на холодную не так сработал. Привожу работавший позавчера черновик кода (с проблемой "!"). Построчный сгруппированный список файлов, у меня их около 40 тыс @rem dir /S /A:A /B /D /N /O:GN %pth%"*.jpg" > files.txt в "CMD /A" пишем (комментарии уберите только) Код:
Код:
И по ходу, не нашёл предпросмотра, сразу Отправить (( Последний раз редактировалось exp98; 20.02.2024 в 14:29. Причина: не туда вставил строки |
![]() |
![]() |
![]() |
#346 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,624
|
![]()
Необходимо отключить отложенное расширение переменных среды. Вот пример:
Код:
Код:
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#347 |
Регистрация: 19.02.2024
Сообщений: 7
|
![]()
Незадача, пока писал резююме, сессия отключилась. Поэтому сейчас очень кратко.
1) Экранирование "^!" работает. Для етого нужно ещё модифицировать строку в скрипте: Код:
Потому что этих букв нет в именах. 2) Облом. Не смог воспроизвести предыдущие удачные запуски. Но логи есть, и это железное алиби 3) Сегодня с самого начала проблема с пробелами. Даже непонятно как удалось раньшеот неё избавиться. Пробелы в подкаталогах. Их много. На первом же ломается парсинг главной команды Код:
Любые опробованные советы приветствуются. Заранее спасибо. |
![]() |
![]() |
![]() |
#348 |
Регистрация: 19.02.2024
Сообщений: 7
|
![]()
Колдовал полдня , ничего неполучилась. Как удалось раньше, не понимаю.
Пробовал разные добавленные кавычки. Ошибки безотказно указывают на первый встречный пробел, причём именно в каталоге. Всегда во втором аргументе. Вот такие в основном Код:
|
![]() |
![]() |
![]() |
#349 |
Регистрация: 19.02.2024
Сообщений: 7
|
![]()
Усё, свой вариант дожал! Глупые ошибки были, менял названия вместо аа.бб аа_бб и обратно. Но везде, аглаз уже не различал где что.
У меня работает такой вариант, но очень долго работает. На неск.тыс. файлов размером ~100-200 К тратится около 20 мин. Действия такие. Если есть возможность, то в списке файлов экранируем "!" ---> "^!", быть может, другой символ. Вот с такой разбивкой на блоки пишем в "CMD /A" (можно и без блоков совсем, просто скопировать блоком быстрее). Лишнее убрать. Код:
чтобы в парсинге списка не участвовал пробел (подразумевается, что "@" в списке отсутствует). Дело в том, что ERRORLEVEL иначе не получается, только в подпрограмме. Код:
Эталон ещё, правда, сам с собой сравнивается. Будет на 1 больше cod==0. Если есть различия cod==1. Если файл не найден (например не экранировали) cod==2 или ещё что-либо Другие значения, если ошибки в командах. У меня это так работает. Если допустил опечатки, заранее извиняюсь. |
![]() |
![]() |
![]() |
#350 | |
Регистрация: 19.02.2024
Сообщений: 7
|
![]()
Несколько очевидных слов.
1) Исправляю пустяк с моей стороны. Ранее написал команду DIR, как я получаю нужный мне список (только нужно без REM). Цитата:
Можно прямо в блокноте винды контесктной заменой начала и концовки. А если расширения у файлов разных типов, то несколько типов замен. Это недолго. Если есть ТоталКомандер, то инструментом "^+M" делается на раз. 2) Хорошо, когда есть кандидаты на дубли, а еслиих нет? Если соорудить таким способом сравнение каждый-с-каждым из 47тыс., возникнет вопрос, как это протоколировать. Во-первых, создать промежуточный список с хэшами. Мне пришлось подключить пхп десятилетней давности. И можно было бы только им одним и ограничиться, но дело принципа сделать именно посредством CMD. Обработка очевидна. Каждый хэш по очереди сравниваем с новым списком (который сначала пустой), а сравнив, пополняем этот новый список. Получим треугольную матрицу сравнений. Треугольную матрицу сравнений хэшей, когда она 100х100 ещё можно получать непосредственно в форме матрицы. Но если сильно больше то текстовый вид затруднителен для анализа. Лучше строго добавлять результат в конец один под другим. Однако для 47тыс файлов дофига строк будет и очень долго. Выход из этого простой. Предпололжить, что точных копий до 10%, и логгировать только их, тогда списки будут вменяемыми. Ну вот и всё на этом, успехов всем! |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос для сохранения листов в отдельных файлах | Neo007 | Microsoft Office Excel | 2 | 22.10.2008 18:16 |
Русская раскладка в bat-файлах | snake-as | Microsoft Office Excel | 3 | 16.10.2008 17:59 |
Сортировка в файлах и записях. Паскаль | Elizabeth Black | Помощь студентам | 2 | 27.05.2008 21:51 |
Помогите с вопросами о файлах | Дима82 | Помощь студентам | 5 | 26.05.2008 19:49 |
Помогите, пожалуйста, решить задачу по файлах | sheva_ser | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 27.03.2008 19:36 |