Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Изменение расширения

Аватара для vk_k14m@vk

Старожил


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


Конфигурация

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


Изменения
Автор: vk_k14m@vk
Дата: 16-03-2017
Есть папка "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" в той же папке где лежат оригиналы. Не трогая файлы с другими расширениями.

Такое возможно?

Отправлено: 02:00, 16-03-2017

 

Ветеран


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

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


Цитата vk_k14m@vk:
Есть папка "data", в ней еще много папок, … В каждой такой папке аналогичные папки. А уже в тех папках лежат файлы »
Сколько уток в зайце уровней вложенности будет? Сколько может быть?

Цитата vk_k14m@vk:
И при запуске создавал бы символические ссылки »
Почему символические, почему не жёсткие (hardlink)?

Цитата vk_k14m@vk:
на файлы с расширениями "jpg@0-9999999" с правильным расширением "jpg" в той же папке где лежат оригиналы. »
А если внезапно окажется, что одноимённый файл «с правильным расширением» уже существует?

Наконец, почему бы просто не переименовать файлы, убрав @ и всё, что за ним, в расширении?

Отправлено: 08:30, 16-03-2017 | #2



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

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


Аватара для vk_k14m@vk

Старожил


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

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


Цитата Iska:
Сколько уток в зайце уровней вложенности будет? Сколько может быть? »
2-3 не больше. Например:
data\0c\d7
data\42\96
data\sample\4e\6a
data\sample\c3\0e

Цитата Iska:
Почему символические, почему не жёсткие (hardlink)? »
В принципе можно и жесткие ссылки. Это не принципиально

Цитата Iska:
А если внезапно окажется, что одноимённый файл «с правильным расширением» уже существует? »
Пропускать либо заменять. Что легче? А вообще таких файло быть не может, только если я сам их не создам.

Цитата Iska:
Наконец, почему бы просто не переименовать файлы, убрав @ и всё, что за ним, в расширении? »
По тому что эти файлы создает программа по загрузке сайтов. Я с одного сайта качаю все картинки. И этот сайт хранит их по умному, "jpg@27" означает что эта картинка на сайте была загружена 27-й по счету. Их уже на 15 гигов накачалось и это даже не половина. Я конечно могу через Тотал Командер изменить все неправильные расширения на правильные. Но тогда загрузчик скачает их заново, а это трата времени и дополнительно 15 гигов на жестком диске. Так же я могу сделать копии всех этих файлов в другом месте и изменить их расширения, тогда загрузчик не будет перекачивать оригиналы, но опять же 15 лишних гигов на диске.

По этому я и хочу сделать ссылки (жесткие или символические) на эти файлы, что б работать с ними.

-------
Взялся отвечать, отвечай до конца!


Отправлено: 17:59, 16-03-2017 | #3


Ветеран


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

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


может просто буферный конвеер сделать
при запуске bat или отдать во власть шедулера, проверяем наличие свежих за сутки (час), забрасываем для операций пациентов с ампутированием расширения до рабочего состояния - вариант?

Отправлено: 18:09, 16-03-2017 | #4


Аватара для vk_k14m@vk

Старожил


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

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


Цитата alpap:
может просто буферный конвеер сделать
при запуске bat или отдать во власть шедулера, проверяем наличие свежих за сутки (час), забрасываем для операций пациентов с ампутированием расширения до рабочего состояния - вариант? »
Может быть и вариант, но я не знаю что за буферный конвеер и как его сделать.

-------
Взялся отвечать, отвечай до конца!


Отправлено: 18:16, 16-03-2017 | #5


Ветеран


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

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


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
а уж как и чем и когда запускать - шедулер в помощь

Отправлено: 18:40, 16-03-2017 | #6


Аватара для vk_k14m@vk

Старожил


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

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


Цитата alpap:
например так, при запуске 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
а уж как и чем и когда запускать - шедулер в помощь »
Программа проверяет только наличие файлов по их имени и расширении. И при каждом старте загрузки. Если б я круглые сутки качал без отключения ПК, то проверок бы не было. А так при каждом запуске проверяются все файлы на наличие, а потом докачиваются отсутствующие. Проверки на размер файла нет. Значит можно подсунуть любой файл, лишь бы имя и расширение подходило.

-------
Взялся отвечать, отвечай до конца!


Отправлено: 19:56, 16-03-2017 | #7


Ветеран


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

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


Цитата vk_k14m@vk:
при каждом запуске проверяются все файлы на наличие »
вы так думаете или проверили?
если программе достаточно одного с максимальным номером - это конечно превосходно
создать необходимую кучу с нужными именами.расш пустых файлов до нужного номера тоже не проблема, но может есть возможность покрутить настройки программы по части поиска и закачки?

Цитата vk_k14m@vk:
эти файлы создает программа по загрузке сайтов »
а если не секрет - ссылочку

Отправлено: 23:42, 16-03-2017 | #8


Аватара для vk_k14m@vk

Старожил


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

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


Цитата alpap:
вы так думаете или проверили? »
Проверял.

Цитата alpap:
если программе достаточно одного с максимальным номером - это конечно превосходно
создать необходимую кучу с нужными именами.расш пустых файлов до нужного номера тоже не проблема, »
Вот только я не знаю в какой папке какой файл с каким каким номером должен лежать.

Цитата alpap:
но может есть возможность покрутить настройки программы по части поиска и закачки? »
Есть такие опции. Пробовал все, и все равно докачивает переименованные файлы.
Скрытый текст



Цитата alpap:
а если не секрет - ссылочку »
Не секрет конечно
https://rutracker.org/forum/viewtopic.php?t=5346113

З.Ы. А может есть способ массово зарегистрировать файлы с расширениями:
jpg@0
jpg@1
jpg@2
jpg@3
...
jpg@9999999
Как изображения. Что б работать с оригиналами.

-------
Взялся отвечать, отвечай до конца!


Отправлено: 00:59, 17-03-2017 | #9


Ветеран


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

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


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: Хах, самое главное забыл — переименование . Добавил и кое-что поправил.

Последний раз редактировалось Iska, 17-03-2017 в 03:03.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:42, 17-03-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Изменение расширения файла без расширения Алексей_Зайцев@vk Скриптовые языки администрирования Windows 16 10-10-2014 15:58
CMD/BAT - Поиск файлов, изменение расширения и перемещение. Артём_Ницак@vk Скриптовые языки администрирования Windows 3 17-09-2013 22:19
CMD/BAT - Автоматическое изменение расширения файла в зависимости от типа mredis@vk Скриптовые языки администрирования Windows 7 30-08-2012 03:37
Система - Изменение расширения funalien Программное обеспечение Windows 2 23-10-2011 07:47
Разное - [решено] Изменение расширения файлов. TDK Microsoft Windows 2000/XP 2 22-10-2010 04:21




 
Переход