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

如何修改Findstr脚本按文件名或修改日期遍历XML文件

解决批处理按文件名/修改日期遍历XML文件的问题

原批处理代码通过findstr直接扫描所有.xml文件时,遍历顺序由系统返回的文件列表决定,并非按文件名或日期有序。要实现指定顺序遍历,需要先通过dir命令生成有序的文件列表,再逐个对文件执行搜索操作,具体方案如下:

一、按文件名顺序遍历

使用dir /B /ON *.xml按文件名升序列出所有XML文件,循环处理每个文件:

@echo off
setlocal EnableDelayedExpansion

> temp.txt (
    rem 按文件名升序列出XML文件,降序用/O-N
    for /F "delims=" %%f in ('dir /B /ON *.xml') do (
        for /F "delims=" %%a in ('findstr /I /L "<a> <b> <c>" "%%f"') do (
            set "line=%%a"
            set "line=!line:*<a>=!"
            set "line=!line:*<b>=!"
            set "line=!line:*<c>=!"
            for /F "delims=<" %%b in ("!line!") do echo %%b
        )
    )
)

二、按修改日期顺序遍历

使用dir /B /OD *.xml按修改日期从旧到新列出文件,如需从新到旧则替换为/O-D:

@echo off
setlocal EnableDelayedExpansion

> temp.txt (
    rem 按修改日期从旧到新列出XML文件,新到旧用/O-D
    for /F "delims=" %%f in ('dir /B /OD *.xml') do (
        for /F "delims=" %%a in ('findstr /I /L "<a> <b> <c>" "%%f"') do (
            set "line=%%a"
            set "line=!line:*<a>=!"
            set "line=!line:*<b>=!"
            set "line=!line:*<c>=!"
            for /F "delims=<" %%b in ("!line!") do echo %%b
        )
    )
)

说明

原代码直接让findstr处理*.xml时,findstr不会对文件进行排序,因此添加排序无效。通过dir命令先生成有序的文件列表,再逐个传递给findstr,就能保证遍历顺序符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:40:10