使用cmd.exe按创建年份统计指定盘符下.RAW文件数量
统计指定盘符下.RAW文件按创建年份的数量
你之前的命令dir /a:-d /s /b "H:" | find /c /v ".RAW"逻辑是反的:/v参数会统计不包含.RAW的文件数量,要统计.RAW总数应该用dir /a:-d /s /b "H:\*.RAW" | find /c /v "",但这个命令无法按创建日期分组统计。以下是两种可行的解决方案:
方案1:PowerShell(推荐,简洁高效)
直接用PowerShell的文件处理能力,一行命令即可完成按年份统计:
Get-ChildItem -Path "H:\" -Filter "*.RAW" -Recurse -File | Group-Object -Property { $_.CreationTime.Year } | Select-Object Name, Count
Get-ChildItem -Path "H:\" -Filter "*.RAW" -Recurse -File:递归遍历H盘所有.RAW格式的文件Group-Object -Property { $_.CreationTime.Year }:按文件的创建年份分组Select-Object Name, Count:输出分组后的年份(Name列)和对应文件数量(Count列)
执行后会直接显示类似结果:
Name Count ---- ----- 2020 15 2021 32 2022 27
方案2:CMD批处理脚本
如果习惯使用CMD命令行,可以用以下批处理脚本实现:
@echo off setlocal enabledelayedexpansion :: 初始化1990-2030年的计数变量 for /l %%y in (1990,1,2030) do set count_%%y=0 :: 遍历所有.RAW文件,提取创建年份并计数 for /f "tokens=1 delims= " %%a in ('dir /a:-d /s /tc "H:\*.RAW" ^| findstr /i "\.RAW$"') do ( set "create_date=%%a" :: 提取年份(适配MM/DD/YYYY和DD/MM/YYYY格式,取日期字符串最后4位) set "year=!create_date:~-4!" set /a count_!year!+=1 ) :: 输出统计结果 echo === RAW文件创建年份统计 === for /l %%y in (1990,1,2030) do ( if !count_%%y! gtr 0 echo 年份 %%y:!count_%%y! 个 ) endlocal
dir /a:-d /s /tc "H:\*.RAW":递归显示H盘所有.RAW文件的创建时间(/tc指定显示创建时间)- 脚本会自动提取年份并累加计数,最后输出有文件的年份和对应数量
注意:CMD的日期格式可能因系统区域设置不同而变化,如果你的系统日期格式不是MM/DD/YYYY或DD/MM/YYYY,需要调整年份提取的字符串截取位置。
内容的提问来源于stack exchange,提问作者Morten Ejby
相关产品推荐
相关产品推荐

