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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Создать сценарий для ResHacker. (http://forum.oszone.net/showthread.php?t=152800)

E-mpty 10-10-2009 13:44 1239286

Создать сценарий для ResHacker.
 
Здравствуйте!

Подскажите пожалуйста, возможно ли,создавать файлы сценария пропатчивания ресурсов,для программы ResHacker?
Например: есть папка с названием ресурса (sndvol32.exe),в ней лежат такие файлы: 1.bmp, 2.ico, 31.RES ...
Нужно чтобы на выходе появился текстовый файл (rcscript.txt) с таким содержанием:
Код:

[FILENAMES]
Exe = "Backup\sndvol32.exe"
SaveAs = "NewFiles\sndvol32.exe"

[COMMANDS]
-addoverwrite "Resources\sndvol32.exe\1.bmp", BITMAP, 1,
-addoverwrite "Resources\sndvol32.exe\2.ico", ICONGROUP, 2,
-addoverwrite "Resources\sndvol32.exe\31.res", DIALOG, 31,

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

Зеленый цвет - дописывает название папки,с которой считывает содержимое,в соответствующее место в строке...
Серый цвет - название файла, в папке.
Синий цвет - дописывает тип ресурса, в зависимости от расшерения файла. Т.е. если расширение файла *.ico то написать ICONGROUP...
Красный цвет - дописывает название, соответствующее имени файла.
Все остальное не изменно, как шаблон...
Реально такое сделать средствами CMD (возможно и дополнительными средствами)?

gora 10-10-2009 14:54 1239370

Структура папок как в Respath-e, скрипт создается прямо в нужной папке
Код:

@Echo off
setlocal enabledelayedexpansion
For /F "UseBackQ Delims=" %%a In (`Dir Resources /B /O:N 2^>nul`) Do (
        Set "scrpt=Resources\%%a\rcscript.txt"
        Echo [FILENAMES]>!scrpt!
        Echo Exe = "Backup\%%a">>!scrpt!
        Echo SaveAs = "NewFiles\%%a">>!scrpt!
        Echo Log = "Logs\%%a.log">>!scrpt!
        Echo.>>!scrpt!
        Echo [COMMANDS]>>!scrpt!
        For /F "UseBackQ Delims=" %%I In (`Dir Resources\%%a /B /O:EN 2^>nul`) Do (
                If Not %%~xI==.txt (
                        If %%~xI==.res Set Resrs=DIALOG
                        If %%~xI==.ico Set Resrs=ICONGROUP
                        If %%~xI==.bmp Set Resrs=BITMAP
                        If %%~xI==.avi Set Resrs=AVI
                                               
                        Echo -addoverwrite "Resources\%%a\%%I", !Resrs!, %%~nI,>>!scrpt!
                )
        )
)
pause
Exit


amel27 10-10-2009 17:21 1239442

ещё вариант - скрипт в каталоге, где и "Resources":
Код:

Set DIR=Resources
Set TXT=rcscript.txt

Set .BMP=BITMAP
Set .ICO=ICONGROUP
Set .RES=DIALOG

For /R "%DIR%" %%i In (.) Do If Not "%%~xi"=="" CALL :DIREXEC "%%i"
EXIT

:DIREXEC
 Echo [FILENAMES]>"%~1\%TXT%"
 Echo Exe = "Backup\%~nx1">>"%~1\%TXT%"
 Echo SaveAs = "NewFiles\%~nx1">>"%~1\%TXT%"
 Echo.>>"%~1\%TXT%"

 Echo [COMMANDS]>>"%~1\%TXT%"
 For %%i In ("%~1\*") Do Call :COMMANDS "%~1" "%%~i"
Exit /B

:COMMANDS
 If Defined %~x2 Call Echo -addoverwrite "%DIR%\%~nx1\%~nx2", %%%~x2%%, %~n2,>>"%~1\%TXT%"
Exit /B

отдельное спасибо gora за ликвидацию "белых пятен" в постановке задачи... особенно насчет местоположения исходных/конечных файлов и каталогов :)

E-mpty 10-10-2009 21:37 1239640

gora, amel27, спасибо вам большое! Это то что нужно :up Я думал написать батник и добавить его запуск в контекстное меню, чтобы при выборе из контекстного меню он создавал рядом с папкой текстовый файл... Но ваш вариант лучше, чем я думал, и сколько времени секономил... спасибо!


Время: 05:44.

Время: 05:44.
© OSzone.net 2001-