菜鸟科技网

res命令是什么?

res 命令并不是 Windows 系统内置的、通用的命令,它通常指的是 Resource Hacker 这个工具的命令行接口,Resource Hacker 是一个非常流行的免费资源编辑器,用于查看、修改、添加和删除 Windows 可执行文件(.exe, .dll, .sys 等)中的资源。

res命令是什么?-图1
(图片来源网络,侵删)

当你看到 res 命令时,几乎可以肯定它是在指 Resource Hacker 的命令行模式


  • res 是什么? 它是 Resource Hacker 工具的命令行版本,通常命名为 res.exe
  • 用来做什么? 用于批处理自动化地修改或提取文件的资源,比如修改程序图标、版本信息、字符串、对话框等。
  • 与 GUI 版本的区别? GUI 版本有图形界面,方便手动操作;res.exe 命令行版本则没有界面,适合在脚本中调用,实现自动化任务。

Resource Hacker 命令行 (res.exe) 的基本语法

res.exe 的基本语法结构如下:

res.exe <command> <inputfile> [options] [outputfile]

<command> - 必需的命令

这是你要执行的核心操作,主要分为以下几类:

命令 全称 描述
-add Add 向文件中添加新的资源。
-addoverwrite Add Overwrite 向文件中添加新的资源,如果同名资源已存在,则覆盖它。
-delete Delete 从文件中删除指定的资源。
-extract Extract 从文件中提取指定的资源,并保存为独立文件。
-script Script 执行一个 Resource Hacker 脚本文件(.rc.res),这是最强大的功能之一。

<inputfile> - 必需的输入文件

你要操作的源文件,myapp.exekernel32.dll

res命令是什么?-图2
(图片来源网络,侵删)

[options] - 可选的参数

这部分是命令的核心,用于指定你要操作的具体资源,资源由三部分组成:类型名称语言

  • -type <type>: 指定资源的类型。
    • 常见类型:ICON, BITMAP, CURSOR, STRING, VERSION, DLG (对话框), MANIFEST (清单) 等。
  • -name <name>: 指定资源的名称或 ID。
    • 名称可以是字符串,如 MAINICON
    • ID 通常是数字,如 1
  • -lang <language>: 指定资源的语言ID。
    • 常见语言:0x0409 (美国英语), 0x0804 (简体中文), 0x0000 (中性) 等。
  • -mask <mask>: 用于更精确地匹配资源,可以包含通配符 。
  • -filename <filename>: 在 -add, -addoverwrite, -extract 命令中,用于指定要添加或提取到的文件名。

[outputfile] - 可选的输出文件

处理后的文件保存到哪里,如果不指定,通常默认会覆盖输入文件。


常用示例

假设我们有一个名为 notepad.exe 的文件,我们想对它进行一些操作。

示例 1:提取所有图标

notepad.exe 中的所有图标提取出来,并保存为单独的 .ico 文件。

res命令是什么?-图3
(图片来源网络,侵删)
res.exe -extract notepad.exe -type ICON -name * -icondir icons\
  • -extract: 执行提取操作。
  • notepad.exe: 输入文件。
  • -type ICON: 指定资源类型为图标。
  • -name *: 匹配所有名称的图标。
  • -icondir icons\: 将提取出的图标保存在 icons 这个文件夹下,如果文件夹不存在,命令会失败。

示例 2:替换应用程序的主图标

假设你有一个新的图标文件 new_icon.ico,你想用它替换 my_app.exe 的主图标(通常是 ID 为 1 的图标)。

res.exe -addoverwrite my_app.exe new_icon.ico, -icon, 1, , my_app_new.exe
  • -addoverwrite: 添加并覆盖同名资源。
  • my_app.exe: 原始文件。
  • new_icon.ico, -icon, 1, ,: 这是一个简化的语法,表示从 new_icon.ico 文件中添加一个类型为 -icon (即 ICON),名称为 1 的资源。
  • my_app_new.exe: 输出新的文件,如果不写,则会直接覆盖 my_app.exe

示例 3:删除版本信息资源

如果你想移除 some_program.exe 中的版本信息。

res.exe -delete some_program.exe -type VERSION -name 1
  • -delete: 执行删除操作。
  • some_program.exe: 输入文件。
  • -type VERSION: 指定资源类型为版本信息。
  • -name 1: 版本信息资源的名称通常是 1

示例 4:使用脚本进行复杂修改 (最强大)

对于复杂的修改(如修改对话框、菜单等),使用脚本文件是最佳选择。

  1. 创建一个脚本文件 changes.rc:

    // 1. 修改对话框标题
    DLG 1000
    CAPTION "我的记事本"
    // 2. 修改一个字符串
    STRINGTABLE
    LANGUAGE 0x0409, 0x0000
    1001, "这是修改后的欢迎信息"
  2. 使用 -script 命令执行脚本:

    res.exe -script changes.rc my_app.exe my_app_modified.exe

如何获取 Resource Hacker?

  1. 访问官方网站:http://www.angusj.com/resourcehacker/
  2. 下载最新版本。
  3. 下载后解压,你会找到 ResHacker.exe (GUI版本) 和 res.exe (命令行版本)。
特性 描述
本质 Resource Hacker 工具的命令行接口 (res.exe)。
用途 自动化地修改、提取、删除 Windows 可执行文件和 DLL 中的资源。
核心场景 软件打包、安装程序制作、系统定制、批量修改程序资源等。
优势 无需人工干预,可集成到 CI/CD 流程或批处理脚本中,效率高。
学习曲线 需要理解 Windows 资源的结构(类型、名称、语言),以及 .rc 脚本语法。

如果你想在 Windows 环境下进行资源级别的文件操作,res 命令是一个非常强大且专业的工具。

分享:
扫描分享到社交APP
上一篇
下一篇