PDA

Показать полную графическую версию : Умная автозамена при перемещении


Страниц : [1] 2

Tosyk
15-02-2011, 05:52
У меня есть такая структура файлов:

_export_
------folder-01
-------------MATERIALS
---------------------material-00.mat
---------------------material-03.mat
---------------------material-....mat
-------------IMAGES
---------------------image-08.jpg
---------------------image-02.jpg
---------------------image-....jpg
-------------NEXT-FOLDER

------folder-02
-------------MATERIALS
---------------------material-01.mat
---------------------material-02.mat
---------------------material-....mat
-------------IMAGES
---------------------image-00.jpg
---------------------image-02.jpg
---------------------image-....jpg
-------------NEXT-FOLDER

Задача такая: нужно чтобы папки MATERIALS, IMAGES, NEXT-FOLDER (папок может быть и больше) перемещались бы на два уровня выше (в папку расположения _export_) и сливались бы в одну (каждая в свою). Однако есть нюанс: могут быть разные файлы с одинаковыми именами, как например image-02.jpg (в папках IMAGES). Так вот нужно проверить их отличие и если они отличаются дописать к последнему имя папки folder-02 (либо folder-01, в зависимости от порядка сравнения). Так же добавить прогресс-бар выполнения скрипта (если возможно то с отображением обрабатываемых в данный момент имён файлов).

Эта задача была блестяще выполнена в этой теме (http://forum.oszone.net/thread-196684.html) товарищем amel27'ом, в сообщени #87 последний рабочий скрипт.

Хочется просто красивое GUI.

madmasles
15-02-2011, 12:09
если они отличаются »Чем? (Размером, хэш-суммой, ...)

Tosyk
15-02-2011, 12:44
Точно знаю, что скрипт cmd сравнивал файлы побайтно, незнаю как это хэш или не хэш

madmasles
15-02-2011, 13:33
Tosyk,
Давайте определимся.
1. Вам нужно окно, в котором Вы можете выбирать папку для обработки? Или папка всегда одна и та же?.
2. Уровень вложенности нужно менять (например, 2-5)? Или всегда 2?
3. Нужны опции удаления исходных файлов? Папок? Или только копирования?
4. Сравнение файлов по размеру или по дате создания-изменения (быстрее, но два файла, содержащие 123 и 345 имеют одинаковый размер)? По MD5 (MD2, MD4, SHA1, ... с возможностью выбора сравнения) (медленнее, но надежнее)?
5. Нужна опция ведения лог-файла или достаточно результаты вывести на экран?
6. В конечных папках файлы одинакового расширения? Или при поиске-перемещении это без разницы? Или нужны опции выбора по расширениям?
7. Пока все вопросы :)

amel27
16-02-2011, 12:27
Точно знаю, что скрипт cmd сравнивал файлы побайтно, незнаю как это хэш или не хэш »
не лукавь, конечный батник сравнивает только размер =)

Tosyk
16-02-2011, 13:53
madmasles,
давайте :)
1 - папка всегда одна и та же
2 - вложенность всегда 2, именно такая структура как я написал в первом посте
3 - как написано в теме "перемещение", т.е. да, удаление нужно (хотя конечно имеется ввиду перемещение)
4 - побайтно конечно надёжнее, но и скорость важна, иногда количество файло достигает нескольких сотен тысяч, и они далеко не маленькие, средний размер - 3 мб, есть ли возможность определить скорость при выбранном способе: размер либо MD5?
5 - думаю это очень полезно, как и результаты.
6 - везде где я встречал всегда расширения одинаковы, однако я не удивлюсь если попадётся, что-то необычное

не лукавь, конечный батник сравнивает только размер =) »
ааа, да? ну тогда вот так, а я ещё думаю почему так быстро процесс завершился)

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

madmasles
16-02-2011, 14:49
Tosyk,
Начнем с конца. :)
"Зашить" программу и запустить ее с нужными параметрами можно. Параметры эти всегда одинаковые или зависят от чего-то? Их выбор нужен?
Нужно ли читать вывод из этой консольной программы и связаны как-то наши дальнейшие действия с тем, что она сделает?
По п.4 предлагаю проверять по очереди размер - дата - MD5.

Tosyk
16-02-2011, 15:05
связаны как-то наши дальнейшие действия с тем, что она сделает? »программа эта - распаковщик, которая должна искать вглубь поддерживаемые архивы по маске *.* и распаковывать их в папку _export_

Параметры эти всегда одинаковые или зависят от чего-то? Их выбор нужен? »было бы чудесно если бы можно было выбирать параметры!

По п.4 предлагаю проверять по очереди размер - дата - MD5. »по дате проверять точно не нужно, а есть ли смысл проверять по размеру елси проверяется сумма md5?

madmasles
16-02-2011, 15:26
программа эта - распаковщик »Вы бы мне ее передали и ключи к ней. Случайно не 7z?а есть ли смысл проверять по размеру елси проверяется сумма md5? »Я имел в виду, что проверяем при совпадении имен так:
1. Не совпадает размер - перемещаем с переименованием.
2. Если совпадает размер проверяем время создания(изменения) - не совпадает - перемещаем с переименованием.
3. И только если совпадают п.1 и п.2, проверяем MD5. :)

Tosyk
16-02-2011, 16:12
Я имел в виду, что проверяем при совпадении имен так: »
ааа, понятно, ну если это не сильно замедлит процесс, тогда пусть проверяет! :)

Вы бы мне ее передали и ключи к ней »вот программа:
http://dl.dropbox.com/u/9919707/blogs/oszone.net/umodel.zip

а вот строка:umodel.exe -export -game=aa3 -all -out=.\_export_

может меняться параметр: -game=aa3

а также добавляться параметры:
nostat, noanim, notex

сэмпл файл:
http://dl.dropbox.com/u/9919707/blogs/oszone.net/AA_Main_UI.upk

madmasles
16-02-2011, 19:24
сэмпл файл:
http://dl.dropbox.com/u/9919707/blog...AA_Main_UI.upk »А что мне с ним делать?

Tosyk
17-02-2011, 14:00
Применить на него вот такой код:for /f "tokens=*" %%a in ('dir /b /s *.*') do umodel.exe -export -nostat -game=aa3 -all -out=.\_export_ "%%a"

madmasles
17-02-2011, 14:42
Применить на него вот такой код: »Запускаю из папки с AA_Main_UI.upk батник с содержаниемfor /f "tokens=*" %%a in ('dir /b /s *.*') do umodel.exe -export -nostat -game=aa3 -all>read.txt
pauseНа выходе получаю то, что в прикрепленном архиве.

Tosyk
17-02-2011, 14:52
а куда эта часть пропала?:
-out=.\_export_ "%%a"

в любом случае попробуйте этот код:for /f "tokens=*" %%a in ('dir /b /s *.*') do umodel.exe -export -all -out=.\_export_ "%%a"на этом файле:
http://dl.dropbox.com/u/9919707/blogs/oszone.net/Admin_A_CH56_Plants.umap

madmasles
17-02-2011, 15:06
а куда эта часть пропала? »
Это моя невнимательность. :blush:
Теперь все работает. :)

madmasles
17-02-2011, 18:11
Tosyk,
Вы не могли бы написать мне только ту часть ком. строки, где работает только umodel.exe (без этого куска for /f "tokens=*" %%a in ('dir /b /s *.*') do) с вариантами ключей и порядка их следования, типаumodel.exe Param1 Param2 Param3 Param4 Param5 и т.д.

Param1 - (обязательный?) -path=чему?
Param2 - (обязательный?) -export или?
Param3 - (обязательный?) -all или?
Param4 - (обязательный?) -nostat, -noanim, -notex
Param5 - (обязательный?) -out=чему?
и т.д.
И еще, как я понял, umodel.exe распаковывает файлы с расширением *.u*, это так?

Tosyk
17-02-2011, 19:26
строки, где работает только umodel.exe »
да конечно:umodel.exe -export -all -out=.\_export_ ФАЙЛ
вместо ФАЙЛ имя файла
Param1 - (обязательный?) -path=чему? »
про этот параметр я кажется нигде не упомянал
Param2 - (обязательный?) -export или? »
ключ действия распаковки, обязательный, не меняется
Param3 - (обязательный?) -all или? »
опционально, желательно, не меняется
Param4 - (обязательный?) -nostat, -noanim, -notex »
опционально, программа umodel.exe иногда не поддерживает в некоторых архивах функции экспорта для некоторых типов файлов, -nostat, -noanim, -notex, эти параметры включают игнорирование, могут указываться как все, так только один из них
Param5 - (обязательный?) -out=чему? »
ключ создаёт папку _export_, обязательный, должна создаваться папка куда распаковываются в структуру (которую я указал в первом посте) файлы, имя папки можно выбрать любое
И еще, как я понял, umodel.exe распаковывает файлы с расширением *.u*, это так? »собственно я сам до конца не знаю какие расширения он поддерживает, для удобства автор сделал игнорирование неподдерживаемых форматов, он их просто игнорирует, поэтому я использую ключ *.*,т.е. ищу во всех файлах вглубь.

madmasles
18-02-2011, 10:16
Tosyk,
Разбираюсь с umodel.exe, хочу сделать прогресс-бар и для него.
Мне не понятно следующее:
1. Файлы и папки распаковываются в заданную папку _export_ в подпапку по имени обрабатываемого файла (без расширения). Сейчас я привязываю прогресс-бар к изменению размеров этой подпапки. А что делает umodel.exe или что нам делать, если такая папка уже есть?
2. По тем 2-м файлам, которые Вы мне передали мне никак не понять связь между размером файла и размером полученных после распаковки файлов и папок.
3. Можно ли какой-нибудь командой получить кол-во файлов или их размер в распаковываемом файле? (команда umodel файл -list > 1.txt не дает мне никакой информации для прогресс-бара).

я сам до конца не знаю какие расширения он поддерживает »
Я добавил в исключения для обработки расширения 'txt', 'au3', 'exe', 'rar', 'cmd', 'bat', 'DLL'. Может еще какие-то добавить или и этого не надо?


ИМХО, нам, наверное, надо переходить в ПМ, пока не получили предупреждения от модераторов.

amel27
18-02-2011, 10:34
ИМХО, нам, наверное, надо переходить в ПМ, пока не получили предупреждения от модераторов. »за что предупреждение?... всё по теме, мы набрали почти 100 постов для батника )

Tosyk
18-02-2011, 11:50
Разбираюсь с umodel.exe, хочу сделать прогресс-бар и для него. »
это было бы чудом :)
А что делает umodel.exe или что нам делать, если такая папка уже есть? »
заменяет всё в ней
мне никак не понять связь между размером файла и размером полученных после распаковки файлов и папок. »
а связи нет, в архивах содержится не только распаковываемая информация, но и так, которую umodel не понимает, а так же umodel имеет встроенный коневертер файлов в более понятный формат, поэтому и получается, что суммы не совпадают
Можно ли какой-нибудь командой получить кол-во файлов или их размер в распаковываемом файле? »
вот что я получил командой umodel -pkginfo Admin_A_CH56_Plants.umap:
Found 1 game files (100 skipped)
Loading package: Admin_A_CH56_Plants.umap Ver: 576/21 Engine: 4701 Names: 1496 Exports: 1669 Imports: 200 Game: 8011
думаю было бы полезно выводить эту информацию, и кстати по версии (в данном случае Ver: 576.21) определяется наличие или отсутствие этих параметров: -nomesh, -noanim, -nostat, -notex, -lzo|lzx|zlib.

можно попробывать ещё такие команды:
umodel -dump Admin_A_CH56_Plants.umap
umodel -check Admin_A_CH56_Plants.umap

Я добавил в исключения для обработки расширения 'txt', 'au3', 'exe', 'rar', 'cmd', 'bat', 'DLL'. Может еще какие-то добавить или и этого не надо? »
да я даже незнаю как они могут быть задействованы, наверное правильно их пропускать, только на счёт au3 не уверен, он кажется как пакет встречается, не вспомнить..

p.s.: ещё забыл про эти паремтры: -ps3, -ios, -sounds, первые два параметра очень важны

вроде, что то ещё хотел спросить, кажется не столь важно :)




© OSzone.net 2001-2012