Gildor's Forums

Author Topic: Извлекаем автоматически из большого числа архивов  (Read 14500 times)
Tosyk
Sr. Member
****
Posts: 366



View Profile WWW
Извлекаем автоматически из большого числа архивов
« on: June 05, 2009, 17:50 »

Устанавливаешь игру на базе Unreal Engine (не полный список можно посмотреть тут).

Кидаешь umodel.exe, SDL.dll и conv.bat (код его написан почти в конце поста) в ту папку где у тебя архивы (upk, xxx или ещё что нить).

Открываешь conv.bat  блокнотом, в строке:
Code:
for /f %%a in ('dir /b *.xxx') do call :process "%%a" "%%~dpa"

меняешь xxx на то расширение, которое имеют файлы, которые ты хочешь конвертировать, например upk, тогда эта строка будет выглядеть следующим образом:
Code:
for /f %%a in ('dir /b *.upk') do call :process "%%a" "%%~dpa"

в строке:
Code:
umodel.exe -noanim -export -md5 %jsFile%

говорится, что файлы будут экспортированы из архивов (команда -export) в формат md5 (команда -md5) - либо mesh (3d объекты), либо anim (анимация), а файлы анимации пропущены (команда -noanim), текстуры (в формате tga) извлекаются по-умолчанию.

Совет: команду -noanim  можно и удалить, в этом случае umodel  попробует найти в «подопытном» архиве анимацию и извлечь её. Но есть игры, анимация которых не поддерживается и тогда при не введённой команде -noanim  может произойти ошибка извлечения остальных файлов (текстуры, объекты). Либо просто совсем ничего не извлечётся!

Сохраняешь файл conv.bat. Закрываешь его. И теперь открываешь двойным щелчком мыши. Должен начаться конверт файлов (в чёрном dos-окошке будут бегать строки текста Smiley), а рядом в папке со временем появится куча (а может и не куча, зависит от количества архивов) извлечённых файлов.

Совет:  одна из последних версий umodel  при извлечении может создавать папки с именем извлекаемого архива.

Собственно сам conv.bat:
Code:
for /f %%a in ('dir /b *.xxx') do call :process "%%a" "%%~dpa"
goto :eof

:process
set jsfile=%1
set p1=%2
set p2=%p1:dev=production%
umodel.exe -noanim -export -md5 %jsFile%

Предупреждён, значит вооружён! Wink

P.S. Опять же, повторюсь, эта тема может быть удалена товарищем Gildor'ом ежели как-то будет неуместна!
« Last Edit: June 05, 2009, 18:47 by Tosyk » Logged

Коллекционирую игровые модели.
my blog - http://cgig.ru
Skykila
Global Moderator
Sr. Member
*****
Posts: 268



View Profile
Re: Извлекаем автоматически из большого числа архивов
« Reply #1 on: August 14, 2010, 18:33 »

Кстати, давно хотел сказать,
СПАСИБО БОЛЬШОЕ!!
Logged

I have the simplest tastes. I am always satisfied with the best.
Oscar Wilde
Vasyan
Newbie
*
Posts: 13



View Profile
Re: Извлекаем автоматически из большого числа архивов
« Reply #2 on: September 24, 2010, 00:52 »

Спасибо! Smiley
Logged
Skykila
Global Moderator
Sr. Member
*****
Posts: 268



View Profile
Re: Извлекаем автоматически из большого числа архивов
« Reply #3 on: October 22, 2010, 16:47 »

В связи с изменением Umodel и проблемами с большим количеством папок, я предлагаю модернизированную версию батника
Code:
for /f %%a in ('dir /b *.*') do call :process "%%a" "%%~dpa"
goto :eof

:process
set jsfile=%1
set p1=%2
set p2=%p1:dev=production%
umodel.exe -export -all -pskx "-out=..\_Export_" %jsFile%

Всё работает и сохраняет все ресурсы в папку _Export_ на этаж выше, то есть например не в MOHAGame->CookedPC->"имя upk" в MOHAGame->_Export_->"имя upk"

P.S. Больше спасибо Гилдору за то что сделал функцию -out
« Last Edit: October 22, 2010, 16:49 by Skykila » Logged

I have the simplest tastes. I am always satisfied with the best.
Oscar Wilde
Gildor
Administrator
Hero Member
*****
Posts: 7971



View Profile WWW
Re: Извлекаем автоматически из большого числа архивов
« Reply #4 on: October 22, 2010, 17:56 »

При желании можно вписать -out=C:\UmodelExport или что-то вроде того. Это особенно актуально при запуске umodel под Win Vista+ из-под не-администратора - там нельзя писать в Program Files.
Logged
Skykila
Global Moderator
Sr. Member
*****
Posts: 268



View Profile
Re: Извлекаем автоматически из большого числа архивов
« Reply #5 on: October 27, 2010, 12:43 »

Действительно, исправим Wink.
либо так
Code:
for /f %%a in ('dir /b *.*') do call :process "%%a" "%%~dpa"
goto :eof

:process
set jsfile=%1
set p1=%2
set p2=%p1:dev=production%
umodel.exe -export -all -pskx "-out=..\_Export_" %jsFile%

либо иначе

Code:
for /f %%a in ('dir /b *.*') do call :process "%%a" "%%~dpa"
goto :eof

:process
set jsfile=%1
set p1=%2
set p2=%p1:dev=production%
umodel.exe -export -all -pskx "-out=C:\UmodelExport" %jsFile%

кстати, кавычки строго обязательны, без них работать не будет  Smiley
Logged

I have the simplest tastes. I am always satisfied with the best.
Oscar Wilde
Tosyk
Sr. Member
****
Posts: 366



View Profile WWW
Re: Извлекаем автоматически из большого числа архивов
« Reply #6 on: January 03, 2011, 07:22 »

Как извлекать из архива в ту папку, в которой находится архив, например

c:\..CookedPC\Packages\Characters\Heroes\Achilles\Achilles_Archetype_SF.upk

извлечь в

c:\..CookedPC\Packages\Characters\Heroes\Achilles\Achilles_Archetype_SF\

при условии, что у меня umodel.exe находится в

c:\..CookedPC\
Logged

Коллекционирую игровые модели.
my blog - http://cgig.ru
Gildor
Administrator
Hero Member
*****
Posts: 7971



View Profile WWW
Re: Извлекаем автоматически из большого числа архивов
« Reply #7 on: November 18, 2011, 13:00 »

Я написал более-менее универсальный .bat файл для экспорта. Для его работы не требуется ничего никуда копировать - кладёте .bat в любой каталог, umodel тоже в любом месте, прописываете путь к игре - и вперёд Smiley Настроек достаточно много и я постарался их сделать как можно более понятнее.
Скрипт лежит в этой теме
Logged
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS