当前位置: 首页 > ai >正文

bat 批处理查看文件年龄

批处理脚本功能

计算当前日期与随机选取文件的创建日期之间的相隔天数,支持跨年、闰年、大小月判断。


流程图解析

开始循环
清屏并初始化天数
随机选取文件
提取文件创建日期
去除日期前导0
提取系统日期
去除系统日期前导0
比较日期并排序
日期递减计算
是否到达目标日期?
输出结果
处理月份/年份切换
是否为闰年?
设置29天
设置28天
暂停并重启循环

关键代码详解

1. 随机选取文件
for /f "tokens=1* delims=:" %%i in ('dir /b *.*^|findstr /n .*') do set var=%%i
set /a w=%random%%%%var%+1
for /f "tokens=1* delims=:" %%i in ('dir /b *.*^|findstr /n .*') do (if "%%i"=="%w%" set wjm=%%j&goto lis
)
  • 作用:通过 dir /b 列出文件,用 findstr /n 添加行号,通过 %random% 随机选择文件路径。
  • 关键点^| 是管道符转义,%%i 为行号,%%j 为文件名。
2. 提取文件创建日期
for /f "skip=4 tokens=1* delims= " %%a in ('dir/c "%wjm%"') do set wjrq=%%a&goto _lis
  • 作用dir/c 显示文件详细信息,跳过前4行无用信息,提取日期部分 %%a
  • 关键点skip=4 跳过头部信息,tokens=1* 获取第一列(日期)。
3. 去除日期前导0
if "%wy:~0,1%" equ "0" set wy=%wy:~1%
  • 作用:使用字符串截取 %var:~n,m% 去除月份和日期的前导零。
  • 示例:若 wy=03,处理后变为 3
4. 日期比较与排序
if %wjrq% lss %xtrq% (set b=%xt1%&set a=%wj%) else (set b=%wj%&set a=%xt1%)
  • 作用:通过 lss(小于)比较文件日期与系统日期,确保 a 为较早日期,b 为较晚日期。
5. 天数递减核心逻辑
:kkk
set/a bri-=1
set/a tian+=1
if "%bri%"=="0" call :_yue
  • 作用:从较晚日期逐天递减,直到与较早日期相等。
  • 关键点bri(日)减到0时调用 :_yue 处理月份切换。
6. 闰年判断
:run
set /a _a=%bnian%/4
set /a _b=%_a%*4
if "%_b%"=="%bnian%" (call :run1) else set ru=0
  • 作用:通过能否被4、100、400整除判断闰年。
  • 逻辑:能被4整除但不能被100整除,或能被400整除则为闰年。
7. 月份切换处理
:_yue
if "%byue%"=="1" (set/a bnian-=1&set byue=12) else set /a byue-=1
if "%byue%"=="2" (call :run) else goto :eof
  • 作用:处理月份递减,1月变12月,其他月份减1。
  • 关键点:二月调用闰年判断,设置28或29天。

使用方法

  1. 将脚本保存为 .bat 文件,放入目标文件夹。
  2. 双击运行,自动计算随机文件的创建天数差。
  3. 按任意键重新随机选取文件。

输出示例

创建日期 2023-02-15     文件名 example.txt
当前日期 2024-03-20
文件 example.txt 创建日期和当前日期相隔 399 天

注意事项

  • 环境依赖:仅适用于Windows系统,日期格式需为 YYYY-MM-DD
  • 闰年逻辑:严格遵循Gregorian历法规则。
  • 文件日期:依赖系统记录的创建日期,非修改日期。
http://www.xdnf.cn/news/13503.html

相关文章:

  • C51 KEIL使用使用问题处理
  • Java异步编程深度解析:从基础到复杂场景的难题拆解
  • K8S中应用无法获取用户真实ip问题排查
  • 数据链抗干扰
  • DNS小结
  • 避免在 iOS 和 Android 的 WebView 中长按出现复制框等默认行为
  • 手机解压 7z 文件全攻略
  • 【全志V821_FoxPi】2-2 切换为spi nand方案启动
  • HTML5 浮动
  • 统计可分解整数的数量
  • leetcode1584. 连接所有点的最小费用-medium
  • 2025低空经济区的安全与应急控制专题研讨会(SECOLZ 2025)
  • DDoS攻防实战:从应急脚本到AI云防护系统
  • 2025年智慧城市与管理工程国际会议(ICSCME 2025)
  • 第二章——线性表之循环链表、静态链表
  • 机械ERP需要解决的几个问题?关于非标机械行业物料编码,如何提升建立效率的说明!
  • 【深度学习】深度学习中的张量:从多维数组到智能计算单元
  • GO语言使用gorm的dbresolver插件实现数据库读写分离
  • iOS开发申请组播/广播权限​
  • 【C/C++】long long 类型传参推荐方式
  • asio之静态互斥量
  • 【PmHub面试篇】集成 Sentinel+OpenFeign实现网关流量控制与服务降级相关面试题解答
  • 远程io模块在汽车流水线的应用
  • 深度学习工具四剑客:Anaconda、Jupyter、PyTorch与CUDA详解
  • 达梦数据库dsc集群+异步主备
  • DeviceNet转Modbus RTU网关在玻璃制造中的关键应用
  • 如何制定兼容多个项目的整体时间计划?
  • Vue.js $emit的介绍和简单使用
  • 【leetcode-合并两个有序链表】
  • Codeforces Round 1029 (Div. 3)