Командные строки скрипта
Весь функционал Resource Hacker™ GUI (кроме просмотра ресурсов) доступен из командной строки без необходимости открывать Resource Hacker™. Скрипт с набором команд может избавить от многократного запуска Resource Hacker™ и открытия/сохранения обрабатываемого файла.
Сценарий командной строки имеет 2 основные формы:
1. Одиночные команды:
ResHacker.exe команда параметры
2. Использование скрипта с множеством команд:
ResHacker.exe -script "скрипт_файл"
Одиночные команды
Команда и параметры:
Команда | Параметры |
-add | ExeFile, SaveAsFile, ResourceFile, ResourceMask |
-addskip | ExeFile, SaveAsFile, ResourceFile, ResourceMask |
-addoverwrite | ExeFile, SaveAsFile, ResourceFile, ResourceMask |
-modify | ExeFile, SaveAsFile, ResourceFile, ResourceMask |
| |
-extract | ExeFile, ResourceFile, ResourceMask |
-delete | ExeFile, SaveAsFile, ResourceMask |
Команда | Описание |
-add | Добавляет с отменой операции при существовании ресурса, не сохраняя результат в файл (аналогично в скрипте выполнение прекращается и ничего не сохраняется, даже частично выполненное.). |
-addskip | Добавляет пропуская существующий(ие) ресурс(ы) |
-addoverwrite | Добавляет перезаписывая существующий(ие) ресурс(ы) |
-modify | Обновляет, перезаписывает только существующий(ие), не добавляя новых ресурсов |
-extract | Извлекает |
-delete | Удаляет |
Параметр | Описание |
ExeFile | Исходный файл (exe, dll, ocx, cpl). |
SaveAsFile | Файл сохранения после операций с ресурсами (может быть тот же, что исходный). |
ResourceFile | Файл ресурсов (часто res, ico, bmp, а фактически любой). |
ResourceMask | Маска ресурса (тип, имя, язык) |
Каждый параметр должен разделяться запятой, но запятая не ставится перед первым параметром.
Если не указан полный путь, а только имя файла, то предполагается, что файл находится в текущей / рабочей папке. Хорошая практика, хотя и не обязательно для данного случая, заключить имя файла в кавычки, если оно содержит пробелы .
Маска ResourceMask является командой для операции с одним или несколькими ресурсами и состоит из ResType,ResName,ResLang (тип,имя,язык ресурса). Если ResType является встроенным стандартным типом, то вместо текстового идентификатора можно использовать числовой, например ResourceMask - Dialog,128,0 идентично 5,128,0. Любые или все элементы маски ResourceMask могут быть опущены, например Dialog,, указывает, что все элементы Dialog'а должны быть обработаны, независимо от имени или языка, а ,,1049 указывает, что все ресурсы с Русским (1049) идентификатором языка будут обработаны. Пустой ResourceMask ,, указывает, что команда будет применена ко всем ресурсам, независимо от типа, имени или языка.
Числовой идентификатор ресурса
№ | В дереве окна | В команде (без пробелов) |
2 | Bitmap | Bitmap |
4 | Menu | Menu |
5 | Dialog | Dialog |
6 | String Table | StringTable |
9 | Accelerators | Accelerators |
10 | RCData | RCData |
11 | Message Table | MessageTable |
12 | Cursor Group | CursorGroup |
14 | Icon Group | IconGroup |
16 | Version Info | VersionInfo |
При добавлении или модификации ресурсов в качестве ResourceFile может использоваться RES-файл для любого типа элемента, BMP-файл для типа Bitmap, CUR-файл для типа CursorGroup, ICO-файл для типа IconGroup, и любой тип файла для RCData и типа ресурса определяемого пользователем.
При добавлении или модификации ресурсов из файлов не являющимися RES-файлами, в ResourceMask должны быть указаны ResType и ResName. Если ResLang опущен, то команда применяется к первому элементу языка соответствующего типа и имени, иначе, если соответствующий элемент не существует, то предполагается нейтральный язык (0).
При извлечении ресурсов, если маска ResourceMask предполагает извлечение более одного ресурса, то ResourceFile должен быть RES- или RC-файлом. При извлечении бинарных ресурсов изображений в RC-файл, каждое изображение также создаётся как отдельный бинарный файл (ICO, CUR, BMP, GIF, BIN). Смотрите пример ниже.
Операции с ресурсами Icon и Cursor не могут выполнятся напрямую из этих секций, но выполняются через секции IconGroup и CursorGroup соответственно. Icon и Cursor все же могут быть использованы, но Resource Hacker™ предполагает применение через секции IconGroup и CursorGroup.
Borland’s DFM файлы могут быть добавлены независимо, являются ли они в бинарном или текстовом формате. Однако извлекаются они всегда в текстовый формат (Чтобы преобразовать текстовый формат dfm файлов в бинарный, используйте Borland’а утилиту Convert.exe).
Все действия или ошибки записываются в лог-файл ResHacker.log.
Примечание: Если скрипт не производит желаемый результат, то проверьте лог-файл!
Примеры: (Пути к файлам опущены для наглядности примеров)
Чтобы добавить или обновить в разделе "dialog", ресурс "maindlg", язык "0" в файле "MyProg.exe" из UpdDlg.res
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, UpdDlg.res, dialog,maindlg,0
Чтобы добавить или обновить bitmap с именем "128" в файле MyProg.exe используя NewImage.bmp
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, NewImage.bmp , bitmap,128,
Чтобы добавить или обновить все bitmap'ы в файле MyProg.exe из Images.res
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, Images.res, bitmap,,
Чтобы добавить "определяемый пользователем" бинарный ресурс (README,1,0) в файл MyProg.exe из ReadMe.html
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, ReadMe.html, readme,1,0
Чтобы добавить все элементы из Images.res в файл MyProg.exe (учитывая сбой, если элемент уже существует)
ResHacker.exe -add MyProg.exe, MyProgNew.exe, Images.res ,,,
Чтобы добавить все элементы из Images.res в файл MyProg.exe (пропуская все существующие элементы)
ResHacker.exe -addskip MyProg.exe, MyProgNew.exe, Images.res ,,,
Чтобы модифицировать все элементы MyProg.exe элементами из Images.res (игнорируя все элементы в Images.res, которые не существуют в MyProg.exe)
ResHacker.exe -modify MyProg.exe, MyProgNew.exe, Images.res , , ,
Чтобы извлечь все иконки из MyProg.exe в MyProgIcons.rc (создаёт MyProgIcons.rc, Icon_1.ico, Icon_2.ico , Icon_3.ico и т.д...)
ResHacker.exe -extract MyProg.exe, MyProgIcons.rc, icongroup,,
Чтобы удалить GIF с именем "128" из MyProg.exe
ResHacker.exe -delete MyProg.exe, MyProgNew.exe, gif,128,
Командный скрипт
Синтаксис
ResHacker.exe -script "скрипт_файл"
"Скрипт_файл" представляет собой текстовый файл следующего формата:
// комментарии следуют за двойным слешем
[FILENAMES]
Exe=
SaveAs=
Log=
[COMMANDS]
-add ResourceSrc, ResourceMask
-addskip ResourceSrc, ResourceMask
-addoverwrite ResourceSrc, ResourceMask
-addoverwrite ResourceSrc, ResourceMask
-modify ResourceSrc, ResourceMask
-extract ResourceTgt, ResourceMask
-delete ResourceMask
Параметр | Описание |
Exe= | Исходный файл (exe, dll, ocx, cpl). |
SaveAs= | Файл для сохранения после операций с ресурсами (может быть тот же, что исходный). |
Log= | Лог-файл, в котором будут отчёт о выполненных операциях и ошибках. |
ResourceSrc | Файл ресурсов (часто res, ico, bmp, а фактически любой). |
ResourceTgt | Целевой файл, в который будет извечён ресурс (часто res, rc, ico, bmp, а фактически любой) |
Если параметр "Log" опущен, то по умолчанию будет использоваться "ResHacker.log".
Примечание: Если скрипт не производит желаемый результат, то проверьте лог-файл!
Примеры скриптов:
Скрипт-файл "rh_script_myprog_rus.txt"
// Этот скрипт удаляет все нейтральные языки (0)
// в разделах ресурсов "menu", "dialog" и "string-table"
// в файле MyProg.exe перед заменой их
// русскими ресурсами (1049)
[FILENAMES]
Exe= MyProg.exe
SaveAs= MyProg_Rus.exe
Log= MyProg_Rus.log
[COMMANDS]
-delete MENU,,0
-delete DIALOG,,0
-delete STRINGTABLE,,0
-add MyProg_Rus.res, MENU,,1049
-add MyProg_Rus.res, DIALOG,,1049
-add MyProg_Rus.res, STRINGTABLE,,1049
Скрипт-файл "rh_script_myprog_upd_images.txt"
// Этот скрипт обновляет 2 ресурса Bitmap
// и иконку в MyProg.exe
[FILENAMES]
Exe= MyProg.exe
SaveAs= MyProg_Updated.exe
[COMMANDS]
-addoverwrite Bitmap128.bmp, BITMAP,128,
-addoverwrite Bitmap129.bmp, BITMAP,129,0
-addoverwrite MainIcon.ico, ICONGROUP,MAINICON,0
Скрипт-файл "rh_script_myprog_upd_all.txt"
// Этот скрипт заменяет все ресурсы
// в MyProg.exe на ресурсы из MyProgNew.res
[FILENAMES]
Exe= MyProg.exe
SaveAs= MyProg_Updated.exe
[COMMANDS]
-delete ,, // предварительно удаляет все ресурсы
-add MyProgNew.res ,,, // добавляет новые ресурсы, все из файла
Скрипт-файл для извлечения всех ресурсов в res-файл. На практике в дальнейшем вы можете сделать импорт (-modify) из res-файла в dll, тем самым обновив новую версию dll русскими ресурсами.
// Извлекает все ресурсы в res-файл
[FILENAMES]
Exe=test.dll
SaveAs=
Log=test.log
[COMMANDS]
-extract test.res,,,