如何在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即可
运行方式
- 保存修改后的Python脚本和批处理文件
- 双击运行
batch_run.bat,等待命令行窗口显示处理完成即可
内容的提问来源于stack exchange,提问作者M-M
相关产品推荐
相关产品推荐

