INI 覆盖层合并工具
将 INI 配置与一个或两个覆盖文件合并,与部署时按默认值、环境和本地设置逐层叠加的方式相同。被覆盖的值会就地编辑,因此基础文件的注释、空行、键的顺序和缩进都会保留;变更报告会准确显示哪些键被新增、修改或保持不变。
输入
默认配置。此文件的注释、顺序和格式会保留在合并结果中。
应用在基础文件之上,只有它指定的键会被修改。
最后应用,因此优先于第一个覆盖文件。若只需合并两个文件,请留空。
选项
写在键所在行的行内注释始终保留,即使关闭此选项。
输出
| 节 | 键 | 基础值 | 合并值 | 变更类型 |
|---|---|---|---|---|
| No data yet | ||||
使用此工具的更多方式
REST API
curl -X POST https://api.iotools.cloud/v1/tool/ini-overlay-merger \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"baseIni": "; Application defaults — keep this file in versi…",
"overlayIni": "; production.ini\ndebug = true\n\n[server]\nhost = 0…",
"secondOverlayIni": "",
"newKeys": "add",
"preserveComments": "true",
"ignoreCase": "",
"assignment": "spaced"
}'替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。
让 AI 代理执行
Use the IOTools `ini-overlay-merger` tool (INI Overlay Merger) on this input:
YOUR_INPUT_HERE将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。
嵌入式小组件
<iframe
src="https://iotools.cloud/embed/ini-overlay-merger/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="INI 覆盖层合并工具 — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。
| 每次 API/MCP 调用费用 | 5 积分起 |
|---|---|
| 需要更多积分? | 查看定价 |
也可通过
使用指南
这个工具做什么
大多数基于 INI 的项目都会有一份默认配置文件,以及每个环境一份的小文件,例如 app.ini 加 production.ini,或者 defaults.ini → staging.ini → local.ini。手动合并这些层级很容易出错:可能漏掉某个键,或者基础文件中的旧值一直保留到了生产环境。
这个工具会把一个覆盖文件应用到基础 INI 上,显示合并后的完整文件,并附带一份报告,说明哪些键被新增、修改或保持不变。
大多数合并工具会把两个文件都解析为对象,再重新序列化输出,这样会悄悄丢掉所有注释,并打乱键的顺序。本工具不这样做。它会在基础文件中原地修改值,因此注释、空行、键的顺序、缩进,甚至被覆盖那一行末尾的行内注释,合并后都会保留。输出就是一份可以直接提交的文件。
使用方法
- 将基础 INI(你的默认配置)粘贴到第一个输入框。
- 将覆盖文件(即特定环境的文件)粘贴到第二个输入框。
- 可选:再添加一个覆盖文件。它最后应用,因此优先于第一个覆盖文件。顺序为
默认 → 环境 → 本地,与实际部署时的解析顺序一致。 - 查看变更表格,然后复制或下载合并后的 INI。
所有操作都在你的浏览器中完成,不会上传任何文件。
设置
- 仅存在于覆盖文件中的键:添加(默认)会把基础文件从未声明过的键追加到其所属节的末尾,必要时在文件末尾创建该节。忽略则只合并基础文件已经声明的键。当基础文件是权威的配置结构,并且不希望覆盖文件中的拼写错误悄悄新增配置项时,请选择此项。
- 保留基础文件的注释行和空行:默认开启。关闭后可得到紧凑、无注释的结果文件。写在键所在行的行内注释无论如何都会保留。
- 节名和键名不区分大小写:有些 INI 解析器会忽略大小写,有些则不会。当覆盖文件写的是
[Server],而基础文件写的是[server],并且你希望它们被视为同一节时,请开启此项。 - 新增键的赋值格式:为新增的行选择
key = value或key=value。已存在的行会保留基础文件中原有的间距。
变更报告
覆盖文件涉及的每个键都会出现在表格中,包括其基础值、合并值,以及以下四种判定之一:
- Changed:覆盖文件把它替换成了不同的值。
- Unchanged:覆盖文件设置的值与基础文件中已有的值相同。这通常说明覆盖文件已经过时,可以删除该行。
- Added:该键只存在于覆盖文件中,已被追加。
- Ignored:该键只存在于覆盖文件中,且选择了忽略,因此它不会出现在输出中。
这四种判定在表格中以英文显示,与上面的名称一致。
那 [section.subsection] 这样的节名呢?
带点的节标题会被视为一个完整的字面节名,并在各文件之间逐个键进行匹配。对于合并来说,这是最安全的理解方式,因为它不会改变任何结构。如果你希望将带点的标题展开为嵌套对象,请将结果通过 INI 转 JSON 转换器 处理。
能合并三个以上的文件吗?
先合并前三个文件,然后将结果重新粘贴到基础文件输入框中,再添加下一个覆盖文件。如果你想比较两份配置而不是合并它们,文本对比 可以提供逐行的差异对比。