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

如何在Windows CMD中用批处理批量运行Python脚本处理文件夹所有XML文件?

批量处理XML文件的解决方案

没问题,我帮你搞定批量处理的需求,分两步来:先调整Python脚本让它支持动态处理指定XML文件,再写批处理脚本自动遍历文件夹里的所有XML并逐个调用处理。

1. 修改Python脚本(支持命令行传参)

原来的脚本硬编码了单个XML路径,我们改成通过命令行接收要处理的文件路径,同时把处理逻辑封装成函数,方便复用。修改后的代码如下:

from lxml import etree as ET
import pandas as pd
import numpy as np
import sys

def process_single_xml(xml_file_path):
    # 读取传入的XML文件
    try:
        tree = ET.parse(xml_file_path)
        root = tree.getroot()
    except Exception as e:
        print(f"读取文件失败 {xml_file_path}: {str(e)}")
        return

    CODE = []
    # 遍历你需要的节点(保留原来的逻辑)
    for errors in root.findall('.//Data/Record/Field[11]/BitField'):
        error = errors.find('Name').text
        error_code = errors.find('RawValue').text
        # 补全你原来的处理逻辑,比如过滤空值
        if error_code is not None:
            CODE.append({"error_name": error, "error_code": error_code})
    
    # 示例:按原XML文件名生成对应的CSV结果(可根据需求调整)
    output_csv = xml_file_path.rsplit('.', 1)[0] + '_result.csv'
    pd.DataFrame(CODE).to_csv(output_csv, index=False, encoding='utf-8-sig')
    print(f"✅ 处理完成:{xml_file_path} → {output_csv}")

if __name__ == "__main__":
    # 校验命令行参数
    if len(sys.argv) != 2:
        print("❌ 用法错误:请输入 python script.py <要处理的XML文件路径>")
        sys.exit(1)
    
    target_xml = sys.argv[1]
    process_single_xml(target_xml)

脚本修改说明:

  • 新增sys模块获取命令行传入的XML文件路径
  • 加入异常捕获,避免单个文件处理失败导致整个流程中断
  • 添加结果保存逻辑(生成对应文件名的CSV,你可以根据实际需求改成合并所有结果到一个文件或其他格式)

2. 编写批处理文件(遍历所有XML)

创建一个批处理文件(比如命名为batch_run.bat),内容如下,它会自动遍历指定文件夹下的所有XML文件,逐个调用Python脚本处理:

@echo off
chcp 65001 >nul  # 设置编码为UTF-8,避免中文乱码

REM 配置你的路径:替换成实际的Python脚本路径和XML文件夹路径
set "PYTHON_SCRIPT=C:\Users\sky\Documents\script.py"
set "XML_FOLDER=C:\Users\sky\Documents\Decoded"

echo 🚀 开始批量处理XML文件...
echo ------------------------------

REM 遍历文件夹下所有.xml文件(如果要递归处理子文件夹,把下面一行改成 for /r "%XML_FOLDER%" %%f in (*.xml) do)
for %%f in ("%XML_FOLDER%\*.xml") do (
    echo 正在处理:%%~nxf
    python "%PYTHON_SCRIPT%" "%%f"
)

echo ------------------------------
echo 🎉 所有XML文件处理完成!
pause

批处理配置说明:

  • chcp 65001用来解决命令行中文乱码问题
  • 修改PYTHON_SCRIPT为你的实际脚本路径,XML_FOLDER为存放所有XML的文件夹路径
  • 如果需要处理子文件夹里的XML,把for %%f in ("%XML_FOLDER%\*.xml") do替换成for /r "%XML_FOLDER%" %%f in (*.xml) do即可

运行方式

  1. 保存修改后的Python脚本和批处理文件
  2. 双击运行batch_run.bat,等待命令行窗口显示处理完成即可

内容的提问来源于stack exchange,提问作者M-M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:28:34