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

当你看到 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.exe 或 kernel32.dll。

[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.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:使用脚本进行复杂修改 (最强大)
对于复杂的修改(如修改对话框、菜单等),使用脚本文件是最佳选择。
-
创建一个脚本文件
changes.rc:// 1. 修改对话框标题 DLG 1000 CAPTION "我的记事本" // 2. 修改一个字符串 STRINGTABLE LANGUAGE 0x0409, 0x0000 1001, "这是修改后的欢迎信息"
-
使用
-script命令执行脚本:res.exe -script changes.rc my_app.exe my_app_modified.exe
如何获取 Resource Hacker?
- 访问官方网站:http://www.angusj.com/resourcehacker/
- 下载最新版本。
- 下载后解压,你会找到
ResHacker.exe(GUI版本) 和res.exe(命令行版本)。
| 特性 | 描述 |
|---|---|
| 本质 | Resource Hacker 工具的命令行接口 (res.exe)。 |
| 用途 | 自动化地修改、提取、删除 Windows 可执行文件和 DLL 中的资源。 |
| 核心场景 | 软件打包、安装程序制作、系统定制、批量修改程序资源等。 |
| 优势 | 无需人工干预,可集成到 CI/CD 流程或批处理脚本中,效率高。 |
| 学习曲线 | 需要理解 Windows 资源的结构(类型、名称、语言),以及 .rc 脚本语法。 |
如果你想在 Windows 环境下进行资源级别的文件操作,res 命令是一个非常强大且专业的工具。
