Показать полную графическую версию : [решено] Изменение расширения
vk_k14m@vk
16-03-2017, 02:00
Есть папка "data", в ней еще много папок, к примеру:
01
3d
4f
7a
8a и т.д.
В каждой такой папке аналогичные папки. А уже в тех папках лежат файлы такого типа:
019a56fee5449135405eb822965851a4.jpg@25
3dba22336cd5574115db3679b669e6b0.jpg@26
4fcdc7a7e87b5e41f3bdf0059a917609.jpg@27 и т.д. Расширение может быть от jpg@0 до jpg@9999999
Нужен BAT файл, который помещался б в папку "data". И при запуске создавал бы символические ссылки на файлы с расширениями "jpg@0-9999999" с правильным расширением "jpg" в той же папке где лежат оригиналы. Не трогая файлы с другими расширениями.
Такое возможно?
Есть папка "data", в ней еще много папок, … В каждой такой папке аналогичные папки. А уже в тех папках лежат файлы »
Сколько уток в зайце уровней вложенности будет? Сколько может быть?
И при запуске создавал бы символические ссылки »
Почему символические, почему не жёсткие (hardlink)?
на файлы с расширениями "jpg@0-9999999" с правильным расширением "jpg" в той же папке где лежат оригиналы. »
А если внезапно окажется, что одноимённый файл «с правильным расширением» уже существует?
Наконец, почему бы просто не переименовать файлы, убрав @ и всё, что за ним, в расширении?
vk_k14m@vk
16-03-2017, 17:59
Сколько уток в зайце уровней вложенности будет? Сколько может быть? »
2-3 не больше. Например:
data\0c\d7
data\42\96
data\sample\4e\6a
data\sample\c3\0e
Почему символические, почему не жёсткие (hardlink)? »
В принципе можно и жесткие ссылки. Это не принципиально
А если внезапно окажется, что одноимённый файл «с правильным расширением» уже существует? »
Пропускать либо заменять. Что легче? А вообще таких файло быть не может, только если я сам их не создам.
Наконец, почему бы просто не переименовать файлы, убрав @ и всё, что за ним, в расширении? »
По тому что эти файлы создает программа по загрузке сайтов. Я с одного сайта качаю все картинки. И этот сайт хранит их по умному, "jpg@27" означает что эта картинка на сайте была загружена 27-й по счету. Их уже на 15 гигов накачалось и это даже не половина. Я конечно могу через Тотал Командер изменить все неправильные расширения на правильные. Но тогда загрузчик скачает их заново, а это трата времени и дополнительно 15 гигов на жестком диске. Так же я могу сделать копии всех этих файлов в другом месте и изменить их расширения, тогда загрузчик не будет перекачивать оригиналы, но опять же 15 лишних гигов на диске.
По этому я и хочу сделать ссылки (жесткие или символические) на эти файлы, что б работать с ними.
может просто буферный конвеер сделать
при запуске bat или отдать во власть шедулера, проверяем наличие свежих за сутки (час), забрасываем для операций пациентов с ампутированием расширения до рабочего состояния - вариант?
vk_k14m@vk
16-03-2017, 18:16
может просто буферный конвеер сделать
при запуске bat или отдать во власть шедулера, проверяем наличие свежих за сутки (час), забрасываем для операций пациентов с ампутированием расширения до рабочего состояния - вариант? »
Может быть и вариант, но я не знаю что за буферный конвеер и как его сделать.
vk_k14m@vk,
например так, при запуске bat проверит файлы по дате создания, пропустит (оставит) самый старый по дате (самый свежий скачанный), который будет выступать в качестве флага для программы по скачиванию, у него будет максимальное число в расширении, если конечно программа проверяет только это, иначе надо знать что еще проверяет, например, наличие всех файлов, тогда надо подумать
оставит самый свежий, остальные переместит в нужную папку и приведет расширение в порядок (если вами правильно оно указано)
@echo off
set "d_in=Папка с файлами закачиваемых картинок"
set "d_out=papka_out"
for /f "skip=1 delims=" %%a in ('dir /a-d/b/o-d/tc "%d_in%"') do (
if not exist "%d_out%" md "%d_out%"
>nul move "%d_in%\%%a" "%d_out%\%%~na.jpg"
)
exit
а уж как и чем и когда запускать - шедулер в помощь
vk_k14m@vk
16-03-2017, 19:56
например так, при запуске bat проверит файлы по дате создания, пропустит (оставит) самый старый по дате (самый свежий скачанный), который будет выступать в качестве флага для программы по скачиванию, у него будет максимальное число в расширении, если конечно программа проверяет только это, иначе надо знать что еще проверяет, например, наличие всех файлов, тогда надо подумать
оставит самый свежий, остальные переместит в нужную папку и приведет расширение в порядок (если вами правильно оно указано)
Код:
@echo off
set "d_in=Папка с файлами закачиваемых картинок"
set "d_out=papka_out"
for /f "skip=1 delims=" %%a in ('dir /a-d/b/o-d/tc "%d_in%"') do (
if not exist "%d_out%" md "%d_out%"
>nul move "%d_in%\%%a" "%d_out%\%%~na.jpg"
)
exit
а уж как и чем и когда запускать - шедулер в помощь »
Программа проверяет только наличие файлов по их имени и расширении. И при каждом старте загрузки. Если б я круглые сутки качал без отключения ПК, то проверок бы не было. А так при каждом запуске проверяются все файлы на наличие, а потом докачиваются отсутствующие. Проверки на размер файла нет. Значит можно подсунуть любой файл, лишь бы имя и расширение подходило.
при каждом запуске проверяются все файлы на наличие »
вы так думаете или проверили?
если программе достаточно одного с максимальным номером - это конечно превосходно
создать необходимую кучу с нужными именами.расш пустых файлов до нужного номера тоже не проблема, но может есть возможность покрутить настройки программы по части поиска и закачки?
эти файлы создает программа по загрузке сайтов »
а если не секрет - ссылочку
vk_k14m@vk
17-03-2017, 00:59
вы так думаете или проверили? »
Проверял.
если программе достаточно одного с максимальным номером - это конечно превосходно
создать необходимую кучу с нужными именами.расш пустых файлов до нужного номера тоже не проблема, »
Вот только я не знаю в какой папке какой файл с каким каким номером должен лежать.
но может есть возможность покрутить настройки программы по части поиска и закачки? »
Есть такие опции. Пробовал все, и все равно докачивает переименованные файлы.
https://pp.userapi.com/c639518/v639518606/14e94/JurSrweq5h8.jpg
а если не секрет - ссылочку »
Не секрет конечно
https://rutracker.org/forum/viewtopic.php?t=5346113
З.Ы. А может есть способ массово зарегистрировать файлы с расширениями:
jpg@0
jpg@1
jpg@2
jpg@3
...
jpg@9999999
Как изображения. Что б работать с оригиналами.
vk_k14m@vk, никакой скрипт Вам не нужен. Только понадобится Вам для этого не Total Commander, а Far Manager (Far Manager Official Site : загрузить (http://www.farmanager.com/download.php?l=ru)). Загружаете стабильную сборку msi соответствующей разрядности, устанавливаете в полном объёме, переключаете на русский язык (F9, Options, Languages). Запускаете, переходите на одной панели в исходный каталог, на другой — в целевой:http://i.imgur.com/SHEGZn8.png
Находясь в исходном каталоге, выделяете все папки и файлы посредством CtrlMultiply (Ctrl+Серая звёздочка), нажимаете AltF6 для создания жёстких ссылок:http://i.imgur.com/HTDZBET.png
В диалоговом окне «Ссылка» 1) устанавливаете параметр «[x] Использовать фильтр», после чего 2) нажимаете кнопку «[ Фильтр ]»: http://i.imgur.com/tuYFQ5b.png
В диалоговом окне «Меню фильтров» нажимаете клавишу Ins (Insert), дабы добавить новый фильтр: http://i.imgur.com/qK1eZ97.png
В диалоговом окне «Фильтр» задаёте 1) какое-нибудь имя фильтра в поле «Имя фильтра:», 2) устанавливаете (если уже не установлен) параметр «[x] Маска:» и 3) задаёте в этом же поле маску файлов в виде «*.jpg*», после чего 4) нажимаете «{ OK }»: http://i.imgur.com/vs7QfRM.png
После возвращения в диалоговое окно «Меню фильтров» помечаем наш новосозданный фильтр пробелом или плюсом: http://i.imgur.com/Z8YAtLD.png
Должно получиться наподобие: http://i.imgur.com/IHmggLI.png
После этого мы закрываем диалоговое окно «Меню фильтров» нажатием Enter и возвращаемся в диалоговое окно «Ссылка». В нём нам осталось нажать «{ Создать ссылку }» (или сочетание клавиш CtrlEnter).
Как видно: http://i.imgur.com/F3RPAXN.png
в целевой панели были созданы папки, аналогичные находящимся в исходном каталоге. На находящиеся в исходном каталоге (и вложенных в неё папках) файлы, попадающие под заданную нами маску, были созданы жёсткие ссылки в целевом каталоге: http://i.imgur.com/W6fbBnk.png
Файлы, не попадающие под маску, так и остались выделены в исходном каталоге (в примере — это файл «0001.txt»). Можно снять с них выделение по маске, нажав Subtract (Серый минус).
Теперь нажимаем Tab для перехода в целевую папку и AltF7 для вызова диалогового окна поиска. В этом окне указываем 1) маску, 2) область поиска и 3) нажимаем кнопку «{ Искать }»: http://i.imgur.com/AcrPIUk.png
После того, как все файлы 1) будут найдены, нажимаем кнопку «[ Панель ]»: http://i.imgur.com/AMhKTYr.png
Используя клавишу Add (Серый плюс), выделяем все найденные файлы, затем нажимаем F6, задаём 1) маску для переименования и 2) нажимаем «{ Переименовать }»: http://i.imgur.com/wNwi1Ru.png
Готово!
Когда Вам потребуется «обновить» целевую папку новыми файлами — Вы просто выделяете всё её содержимое и удаляете напрямую, минуя Корзину. Затем повторяете описанные операции (если сохраните конфигурацию — заново создавать фильтр не потребуется).
Update: Хах, самое главное забыл — переименование :). Добавил и кое-что поправил.
vk_k14m@vk
17-03-2017, 04:47
vk_k14m@vk, никакой скрипт Вам не нужен. Только понадобится Вам для этого не Total Commander, а Far Manager (Far Manager Official Site : загрузить). Загружаете стабильную сборку msi соответствующей разрядности, устанавливаете в полном объёме, переключаете на русский язык (F9, Options, Languages). Запускаете, переходите на одной панели в исходный каталог, на другой — в целевой:
Скрытый текст
Находясь в исходном каталоге, выделяете все папки и файлы посредством CtrlMultiply (Ctrl+Серая звёздочка), нажимаете AltF6 для создания жёстких ссылок:
Скрытый текст
В диалоговом окне «Ссылка» 1) устанавливаете параметр «[x] Использовать фильтр», после чего 2) нажимаете кнопку «[ Фильтр ]»:
Скрытый текст
В диалоговом окне «Меню фильтров» нажимаете клавишу Ins (Insert), дабы добавить новый фильтр:
Скрытый текст
В диалоговом окне «Фильтр» задаёте 1) какое-нибудь имя фильтра в поле «Имя фильтра:», 2) устанавливаете (если уже не установлен) параметр «[x] Маска:» и 3) задаёте в этом же поле маску файлов в виде «*.jpg*», после чего 4) нажимаете «{ OK }»:
Скрытый текст
После возвращения в диалоговое окно «Меню фильтров» помечаем наш новосозданный фильтр пробелом или плюсом:
Скрытый текст
Должно получиться наподобие:
Скрытый текст
После этого мы закрываем диалоговое окно «Меню фильтров» нажатием Enter и возвращаемся в диалоговое окно «Ссылка». В нём нам осталось нажать «{ Создать ссылку }» (или сочетание клавиш CtrlEnter).
Как видно:
Скрытый текст
в целевой панели были созданы папки, аналогичные находящимся в исходном каталоге. На находящиеся в исходном каталоге (и вложенных в неё папках) файлы, попадающие под заданную нами маску, были созданы жёсткие ссылки в целевом каталоге:
Скрытый текст
Файлы, не попадающие под маску, так и остались выделены в исходном каталоге (в примере — это файл «0001.txt»). Можно снять с них выделение по маске, нажав Subtract (Серый минус).
Теперь нажимаем Tab для перехода в целевую папку и AltF7 для вызова диалогового окна поиска. В этом окне указываем 1) маску, 2) область поиска и 3) нажимаем кнопку «{ Искать }»:
Скрытый текст
После того, как все файлы 1) будут найдены, нажимаем кнопку «[ Панель ]»:
Скрытый текст
Используя клавишу Add (Серый плюс), выделяем все найденные файлы, затем нажимаем F6, задаём 1) маску для переименования и 2) нажимаем «{ Переименовать }»:
Скрытый текст
Готово!
Когда Вам потребуется «обновить» целевую папку новыми файлами — Вы просто выделяете всё её содержимое и удаляете напрямую, минуя Корзину. Затем повторяете описанные операции (если сохраните конфигурацию — заново создавать фильтр не потребуется).
Update: Хах, самое главное забыл — переименование . Добавил и кое-что поправил. »
Какой объемный ответ. И наверняка правильный. Завтра (уже сегодня) попробую этот вариант. Надеюсь подойдет...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.