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

如何在列出.7z文件内文件详情时加入日期筛选参数?

按修改日期筛选7z包内文件的Bat命令优化

你原来的批量列7z内容的命令确实好用,要加上日期筛选的话,分两种场景给你实用方案:

1. 快速筛选单一特定日期的文件(保留原表格格式)

如果只需要抓取某个固定日期(比如示例里的2018-04-10)的文件,我们可以先手动写入表格表头(避免被过滤掉),再用findstr匹配包含目标日期的行:

@echo off
rem 先写入表格表头到结果文件
echo Date      Time    Attr Size Compressed Name > listing.txt
echo ------------------- ----- ------------ ------------ ------------------------ >> listing.txt

rem 遍历所有7z文件,筛选指定日期的行
FOR /F "tokens=* delims=" %%A in ('dir /b /s *.7z') do (
    7z.exe l -r "%%A" | findstr /C:"2018-04-10" >> listing.txt
)

这个命令的输出格式和你原来的完全一致,只是只保留2018-04-10的文件行,非常简洁高效。

2. 用7z详细输出做更灵活的筛选(比如日期范围)

如果需要筛选日期范围(比如2018-04-10到2018-04-12),可以用7z的-slt参数输出详细元数据(每行是键 = 值的格式,比如Modified = 2018-04-10 00:15:06),再结合Bat的变量判断来筛选:

@echo off
setlocal enabledelayedexpansion
set "targetStartDate=2018-04-10"
set "targetEndDate=2018-04-12"

rem 初始化结果文件表头
echo Date      Time    Attr Size Compressed Name > listing.txt
echo ------------------- ----- ------------ ------------ ------------------------ >> listing.txt

FOR /F "tokens=* delims=" %%A in ('dir /b /s *.7z') do (
    set "currentFileDate="
    set "shouldCapture=0"
    rem 解析7z的详细输出
    for /F "tokens=1,2 delims==" %%B in ('7z.exe l -r -slt "%%A"') do (
        rem 提取文件修改日期(只取YYYY-MM-DD部分)
        if "%%B"=="Modified " (
            set "currentFileDate=%%~C"
            set "currentFileDate=!currentFileDate:~0,10!"
            rem 比较日期(YYYY-MM-DD格式可以直接字符串比较)
            if "!currentFileDate!" GEQ "!targetStartDate!" if "!currentFileDate!" LEQ "!targetEndDate!" (
                set "shouldCapture=1"
            ) else (
                set "shouldCapture=0"
            )
        )
        rem 如果当前文件符合日期,就提取文件名并补全信息
        if "%%B"=="Name " if !shouldCapture! equ 1 (
            rem 这里可以根据需求调整输出格式,或者扩展为提取完整表格行
            echo !currentFileDate!  [对应时间]  [属性]  [大小]  [压缩大小]  %%~C >> listing.txt
        )
    )
)
endlocal

这个方法适合更复杂的筛选需求,注意要开启enabledelayedexpansion来处理循环内的变量。

小提示

  • 测试的时候可以先把>> listing.txt改成>> test.txt,避免覆盖原有结果文件。
  • 如果你需要更精准的时间筛选(比如某一天的某个时段),可以把findstr的匹配内容改成2018-04-10 00:这样的格式,缩小范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:36