You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量处理HTML文件,为manifest数组内对象添加统一键值对

嘿,这个批量修改的需求我之前帮不少人解决过,给你分享几个实用的工具和技巧,覆盖不同技术背景的情况:

1. VS Code 多文件正则替换(零代码门槛,首选)

如果你不是程序员,这个方法最省心,不用写脚本,靠编辑器自带功能就能搞定:

  • 把所有HTML文件所在的文件夹拖进VS Code
  • 按下 Ctrl+Shift+F 打开全局搜索替换面板
  • 开启正则匹配模式(点击搜索框右侧的 .* 按钮)
  • 关键是写对匹配规则:
    假设你的manifest数组是这种格式:
    var manifest = [
      {name: 'Page1', path: '/page1.html'},
      {name: 'Page2', path: '/page2.html'}
    ];
    
    要给每个对象添加 newKey: 'fixedValue',可以这么写:
    • 查找框:({[^}]+)(}) (匹配每个对象的大括号及内部内容)
    • 替换框:$1, newKey: 'fixedValue'$2 (把键值对插入到对象末尾)
  • 先点击“预览”确认替换结果没问题,再点击“替换全部”

⚠️ 小提示:如果原对象最后已经有逗号,替换时可以去掉逗号,改成 $1 newKey: 'fixedValue'$2,或者用更灵活的正则避免重复逗号。

2. Python 脚本(灵活可控,适合复杂场景)

如果你的manifest数组格式不规整(比如有嵌套对象、注释),正则容易出错,用Python脚本解析更靠谱:

import os
import re
import json

# 定义要添加的键值对
additional_kv = {"newKey": "fixedValue", "priority": 1}

# 目标文件夹路径,改成你自己的
target_folder = "./your-html-files"

# 遍历所有HTML文件
for filename in os.listdir(target_folder):
    if not filename.endswith(".html"):
        continue
    file_path = os.path.join(target_folder, filename)
    
    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # 匹配并替换manifest数组
    def update_manifest(match):
        arr_str = match.group(1)
        try:
            # 把数组字符串转成Python列表
            manifest_list = json.loads(arr_str)
            # 给每个对象添加键值对
            for item in manifest_list:
                item.update(additional_kv)
            # 转回格式化后的字符串
            updated_arr = json.dumps(manifest_list, indent=2)
            return f"var manifest = {updated_arr};"
        except Exception as e:
            print(f"处理文件 {filename} 出错:{str(e)}")
            return match.group(0)  # 出错就保留原内容
    
    # 执行替换(re.DOTALL让.匹配换行)
    updated_content = re.sub(r'var manifest = (\[.*?\]);', update_manifest, content, flags=re.DOTALL)
    
    # 写回文件
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(updated_content)
    
    print(f"已处理:{filename}")
  • 注意:如果你的manifest用const/let定义,或者数组里有注释,需要调整正则和解析逻辑(比如用demjson库处理带注释的JSON)。
3. Node.js 脚本(前端开发者友好)

如果你是前端开发者,用Node.js更顺手,逻辑和Python类似:

const fs = require('fs');
const path = require('path');

// 要添加的键值对
const addKV = { newKey: 'fixedValue', priority: 1 };
// 目标文件夹
const targetDir = './your-html-files';

// 遍历文件
fs.readdirSync(targetDir).forEach(file => {
    if (path.extname(file) !== '.html') return;
    const filePath = path.join(targetDir, file);
    let content = fs.readFileSync(filePath, 'utf8');
    
    // 匹配并更新manifest数组
    content = content.replace(/var manifest = (\[.*?\]);/s, (match, arrStr) => {
        try {
            const manifestArr = JSON.parse(arrStr);
            manifestArr.forEach(item => Object.assign(item, addKV));
            return `var manifest = ${JSON.stringify(manifestArr, null, 2)};`;
        } catch (err) {
            console.error(`处理 ${file} 失败:`, err);
            return match;
        }
    });
    
    fs.writeFileSync(filePath, content, 'utf8');
    console.log(`完成:${file}`);
});
  • 复杂场景下可以用esprima解析JavaScript AST,精准找到manifest数组的每个对象添加属性,完全避免正则的局限性。
4. 命令行工具(适合Linux/macOS用户)

如果你熟悉命令行,用sed可以快速处理简单格式的文件:

# macOS 版本(注意-i后面的空字符串)
sed -i '' 's/{\(.*\)}/{ \1, newKey: "fixedValue" }/g' *.html

# Linux GNU sed 版本
sed -i 's/{\(.*\)}/{ \1, newKey: "fixedValue" }/g' *.html

⚠️ 这个方法只适合每个对象单独一行、格式非常规整的情况,否则容易匹配出错。

必看注意事项

  1. 先备份所有文件:批量操作前一定要复制一份原始文件,避免替换出错无法恢复
  2. 先测试再批量:找几个典型文件验证替换规则,确认没问题再处理全部文件
  3. 复杂格式优先用脚本:如果manifest数组有嵌套、注释或者非标准格式,别用正则,用Python/Node.js的解析方法更可靠

内容的提问来源于stack exchange,提问作者Point Clear Media

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:24:19