Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Умная автозамена при перемещении (http://forum.oszone.net/showthread.php?t=199520)

Tosyk 15-02-2011 05:52 1613181

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

_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, в зависимости от порядка сравнения). Так же добавить прогресс-бар выполнения скрипта (если возможно то с отображением обрабатываемых в данный момент имён файлов).

Эта задача была блестяще выполнена в этой теме товарищем amel27'ом, в сообщени #87 последний рабочий скрипт.

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

madmasles 15-02-2011 12:09 1613379

Цитата:

Цитата Tosyk
если они отличаются »

Чем? (Размером, хэш-суммой, ...)

Tosyk 15-02-2011 12:44 1613404

Точно знаю, что скрипт cmd сравнивал файлы побайтно, незнаю как это хэш или не хэш

madmasles 15-02-2011 13:33 1613445

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

amel27 16-02-2011 12:27 1614279

Цитата:

Цитата Tosyk
Точно знаю, что скрипт cmd сравнивал файлы побайтно, незнаю как это хэш или не хэш »

не лукавь, конечный батник сравнивает только размер =)

Tosyk 16-02-2011 13:53 1614354

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

Цитата:

Цитата amel27
не лукавь, конечный батник сравнивает только размер =) »

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

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

madmasles 16-02-2011 14:49 1614408

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

Tosyk 16-02-2011 15:05 1614420

Цитата:

Цитата madmasles
связаны как-то наши дальнейшие действия с тем, что она сделает? »

программа эта - распаковщик, которая должна искать вглубь поддерживаемые архивы по маске *.* и распаковывать их в папку _export_

Цитата:

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

было бы чудесно если бы можно было выбирать параметры!

Цитата:

Цитата madmasles
По п.4 предлагаю проверять по очереди размер - дата - MD5. »

по дате проверять точно не нужно, а есть ли смысл проверять по размеру елси проверяется сумма md5?

madmasles 16-02-2011 15:26 1614446

Цитата:

Цитата Tosyk
программа эта - распаковщик »

Вы бы мне ее передали и ключи к ней. Случайно не 7z?
Цитата:

Цитата Tosyk
а есть ли смысл проверять по размеру елси проверяется сумма md5? »

Я имел в виду, что проверяем при совпадении имен так:
1. Не совпадает размер - перемещаем с переименованием.
2. Если совпадает размер проверяем время создания(изменения) - не совпадает - перемещаем с переименованием.
3. И только если совпадают п.1 и п.2, проверяем MD5. :)

Tosyk 16-02-2011 16:12 1614492

Цитата:

Цитата madmasles
Я имел в виду, что проверяем при совпадении имен так: »

ааа, понятно, ну если это не сильно замедлит процесс, тогда пусть проверяет! :)

Цитата:

Цитата madmasles
Вы бы мне ее передали и ключи к ней »

вот программа:
http://dl.dropbox.com/u/9919707/blog...net/umodel.zip

а вот строка:
Код:

umodel.exe -export -game=aa3 -all -out=.\_export_
может меняться параметр: -game=aa3

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

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

madmasles 16-02-2011 19:24 1614666

Цитата:

Цитата Tosyk

А что мне с ним делать?

Tosyk 17-02-2011 14:00 1615319

Применить на него вот такой код:
Код:

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 1615360

Цитата:

Цитата Tosyk
Применить на него вот такой код: »

Запускаю из папки с 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 1615369

а куда эта часть пропала?:
Код:

-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/blog...56_Plants.umap

madmasles 17-02-2011 15:06 1615379

Цитата:

Цитата Tosyk
а куда эта часть пропала? »

Это моя невнимательность. :blush:
Теперь все работает. :)

madmasles 17-02-2011 18:11 1615534

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 1615584

Цитата:

Цитата madmasles
строки, где работает только umodel.exe »

да конечно:
Код:

umodel.exe -export -all -out=.\_export_ ФАЙЛ
вместо ФАЙЛ имя файла
Цитата:

Цитата madmasles
Param1 - (обязательный?) -path=чему? »

про этот параметр я кажется нигде не упомянал
Цитата:

Цитата madmasles
Param2 - (обязательный?) -export или? »

ключ действия распаковки, обязательный, не меняется
Цитата:

Цитата madmasles
Param3 - (обязательный?) -all или? »

опционально, желательно, не меняется
Цитата:

Цитата madmasles
Param4 - (обязательный?) -nostat, -noanim, -notex »

опционально, программа umodel.exe иногда не поддерживает в некоторых архивах функции экспорта для некоторых типов файлов, -nostat, -noanim, -notex, эти параметры включают игнорирование, могут указываться как все, так только один из них
Цитата:

Цитата madmasles
Param5 - (обязательный?) -out=чему? »

ключ создаёт папку _export_, обязательный, должна создаваться папка куда распаковываются в структуру (которую я указал в первом посте) файлы, имя папки можно выбрать любое
Цитата:

Цитата madmasles
И еще, как я понял, umodel.exe распаковывает файлы с расширением *.u*, это так? »

собственно я сам до конца не знаю какие расширения он поддерживает, для удобства автор сделал игнорирование неподдерживаемых форматов, он их просто игнорирует, поэтому я использую ключ *.*,т.е. ищу во всех файлах вглубь.

madmasles 18-02-2011 10:16 1615956

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

Цитата:

Цитата Tosyk
я сам до конца не знаю какие расширения он поддерживает »

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


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

amel27 18-02-2011 10:34 1615964

Цитата:

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

за что предупреждение?... всё по теме, мы набрали почти 100 постов для батника )

Tosyk 18-02-2011 11:50 1616033

Цитата:

Цитата madmasles
Разбираюсь с umodel.exe, хочу сделать прогресс-бар и для него. »

это было бы чудом :)
Цитата:

Цитата madmasles
А что делает umodel.exe или что нам делать, если такая папка уже есть? »

заменяет всё в ней
Цитата:

Цитата madmasles
мне никак не понять связь между размером файла и размером полученных после распаковки файлов и папок. »

а связи нет, в архивах содержится не только распаковываемая информация, но и так, которую umodel не понимает, а так же umodel имеет встроенный коневертер файлов в более понятный формат, поэтому и получается, что суммы не совпадают
Цитата:

Цитата madmasles
Можно ли какой-нибудь командой получить кол-во файлов или их размер в распаковываемом файле? »

вот что я получил командой 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

Цитата:

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

да я даже незнаю как они могут быть задействованы, наверное правильно их пропускать, только на счёт au3 не уверен, он кажется как пакет встречается, не вспомнить..

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

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

madmasles 18-02-2011 12:39 1616071

Цитата:

Цитата Tosyk
на счёт au3 не уверен »

Это расширение скрипта AutoIt.

Что-то я запутался с параметрами. Пока у меня следующее:
Код:

umodel.exe* -export* -all** -nostat*** -noanim*** -notex*** -out=File.nnn*

*  - присутствует всегда.
**  - есть выбор, по умолчанию присутствует.
*** - есть выбор, по умолчанию отсутствует.

Добавьте, пожалуйста, все существующие команды и параметры(ключи).

Tosyk 18-02-2011 14:18 1616157

Цитата:

Цитата madmasles
Это расширение скрипта AutoIt. »

понял

Цитата:

Цитата madmasles
Добавьте, пожалуйста, все существующие команды и параметры(ключи).»

umodel.exe* -export* -nostat*** -noanim*** -notex*** -lzo*** -lzx*** -zlib*** -ps3*** -ios*** -sounds*** -all** -out=File.nnn*

есть одна особенность - umodel.exe постояно выходит новая версия. в которую добавляется поддержка новых версий архивов

и ещё, возможно ли обратить внимание на версию пакетов:
Цитата:

Цитата Tosyk
Ver: 576/21 Engine: 4701»

и, допустим при определении включать нужные параметры, вот эти:
-nostat*** -noanim*** -notex*** -lzo*** -lzx*** -zlib*** -ps3*** -ios***

madmasles 18-02-2011 15:47 1616252

Цитата:

Цитата Tosyk
возможно ли обратить внимание на версию пакетов: »

Тогда мне нужен набор команд(ключей) для каких-то определенных версий и набор по умолчанию, если эти версии не найдены.
Цитата:

Цитата Tosyk
есть одна особенность - umodel.exe постояно выходит новая версия. в которую добавляется поддержка новых версий архивов »

Плохо, что в самом umodel.exe версия не указывается. Тогда, наверное, имеет смысл проверять, например, если есть папка Umodel, а в ней лежит umodel.exe, то использовать этот, а не вшитый. И в эту же папку подкладывать ини-файл, в котором есть новые версии пакетов и набор команд(ключей) для них.

Tosyk 18-02-2011 16:02 1616268

а есть ли возможность мне самому изменять код в дальнейшем, мне даже как то неудобно спрашивать :)

madmasles 18-02-2011 16:11 1616283

Цитата:

Цитата Tosyk
а есть ли возможность мне самому изменять код в дальнейшем »

Я Вам все исходники отдам. Изменяйте сколько хотите и как хотите, без проблем. :)
Если будет что-то не понятно, задавайте вопросы на форумах, всегда помогут. Любители AutoIt`a люди отзывчивые. :Beer:

Tosyk 18-02-2011 16:15 1616293

спасибо =), вот хотелось бы тоже научиться и по аналогии тоже делать, и по возможности расширить собрав информацию по umodel'у

add: а по поводу вынесения umodel.exe и информации о версиях: возможно ли его вшить всё таки в exe, при необходимости его можно обновлять постоянно, я по крайней мере готов, и ещё вынести информацию о версиях в отдельный файл, который можно было бы дополнять, но вшить его в файл, ой много написал

madmasles 18-02-2011 17:02 1616346

Tosyk,
Цитата:

Цитата Tosyk
возможно ли его вшить всё таки в exe, при необходимости его можно обновлять постоянно, я по крайней мере готов »

Можно обновлять хоть каждый день. Только обновления надо постоянно отслеживать, учите, короче, AutoIt. :)


Время: 00:51.

Время: 00:51.
© OSzone.net 2001-