2026-04-09
教程
0

目录

OpenClaw 配置文件 JSON 格式验证命令
用途
命令
批量提取文华TYPES目录下所有 .XTRD 文件中的麦语言代码

OpenClaw 配置文件 JSON 格式验证命令

用途

在修改 ~/.openclaw/openclaw.json 配置文件后,快速验证 JSON 格式是否正确,避免因格式错误导致 OpenClaw Gateway 启动失败。

命令

bash
python3 -c "import json; json.load(open('路径'))" && echo "JSON OK"

批量提取文华TYPES目录下所有 .XTRD 文件中的麦语言代码

python
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 批量提取文华TYPES目录下所有 .XTRD 文件中的麦语言代码 用法:python extract_all_types.py [源目录] [输出目录] 若不指定参数,默认源目录为当前目录,输出目录为当前目录下的 WH8_MQL """ import os import re import sys def extract_code_from_xtrd(file_path: str) -> str: """从 .XTRD 文件中提取 <CODE> 标签内的代码""" try: # 尝试用 GBK 编码读取(文华默认中文编码) with open(file_path, 'r', encoding='gbk', errors='ignore') as f: content = f.read() except Exception as e: print(f"❌ 读取文件失败 {file_path}: {e}") return None # 正则匹配 <CODE>...</CODE>,支持多行和空白 match = re.search(r'<CODE>\s*(.*?)\s*</CODE>', content, re.DOTALL) if not match: # 有些文件可能没有 CODE 标签,跳过 return None code = match.group(1).strip() # 处理可能存在的 HTML 实体(极少情况) code = code.replace('&lt;', '<').replace('&gt;', '>').replace('&amp;', '&') return code def process_directory(src_dir: str, dst_dir: str): """递归处理目录,保持文件夹结构""" if not os.path.isdir(src_dir): print(f"❌ 源目录不存在: {src_dir}") return count = 0 for root, dirs, files in os.walk(src_dir): # 计算相对路径 rel_path = os.path.relpath(root, src_dir) if rel_path == '.': target_dir = dst_dir else: target_dir = os.path.join(dst_dir, rel_path) # 确保目标目录存在 os.makedirs(target_dir, exist_ok=True) for file in files: if not file.lower().endswith('.xtrd'): continue src_file = os.path.join(root, file) code = extract_code_from_xtrd(src_file) if code is None: print(f"⚠️ 跳过(无CODE标签): {rel_path}/{file}") continue # 生成输出文件名:去掉 .XTRD 后缀,加上 .mql base_name = file[:-5] if file.lower().endswith('.xtrd') else file safe_name = re.sub(r'[\\/*?:"<>|]', '_', base_name) out_file = os.path.join(target_dir, f"{safe_name}.mql") with open(out_file, 'w', encoding='utf-8') as f: f.write(code) count += 1 print(f"✅ 已提取: {rel_path}/{safe_name}.mql") print(f"\n🎉 提取完成!共处理 {count} 个文件,保存至: {dst_dir}") if __name__ == '__main__': # 默认源目录为当前脚本所在目录,输出为同级 WH8_MQL default_src = os.getcwd() default_dst = os.path.join(default_src, 'WH8_MQL') if len(sys.argv) >= 3: src = sys.argv[1] dst = sys.argv[2] elif len(sys.argv) == 2: src = sys.argv[1] dst = os.path.join(os.path.dirname(src), 'WH8_MQL') else: src = default_src dst = default_dst print(f"📂 源目录: {src}") print(f"📁 输出目录: {dst}") print("-" * 50) process_directory(src, dst)

本文作者:苏皓明

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!