bat脚本:获取并计算前一天的日期

脚本目的

该脚本的主要功能是获取当前日期,并计算出前一天的日期,然后将计算结果进行输出。

脚本内容

@echo off
rem 获取当前日期并计算前一天的日期
for /f "tokens=2 delims==" %%I in ('"wmic os get localdatetime /value"') do set datetime=%%I
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%

rem 计算前一天的日期
powershell -Command "$date = Get-Date '%year%-%month%-%day%'; $yesterday = $date.AddDays(-1).ToString('yyyyMMdd'); $yesterday" > temp_date.txt
set /p yesterday=<temp_date.txt
del temp_date.txt

rem 输出前一天的日期
echo Yesterday's date is: %yesterday%

pause

脚本解析

  1. 关闭回显 (@echo off)

    • @echo off 命令用于关闭命令行窗口中的命令回显,只显示脚本中的输出内容,避免屏幕上杂乱无章的信息。
  2. 获取当前日期时间 (wmic os get localdatetime)

    • 使用 wmic os get localdatetime 命令获取操作系统的本地日期和时间。返回格式类似于 20250102 123456.000000+480,其中:
      • 20240102 表示日期(年、月、日)。
      • 123456 表示时间(时、分、秒)。
    • for /f "tokens=2 delims==" %%I in ('"wmic os get localdatetime /value"') 将该信息提取并保存到变量 datetime 中。
  3. 提取当前日期的年、月、日部分

    • 使用 set 命令将 datetime 字符串中的年、月、日部分提取并赋值给 yearmonthday 变量:
      • %datetime:~0,4% 提取年份(前 4 位)。
      • %datetime:~4,2% 提取月份(第 5 到第 6 位)。
      • %datetime:~6,2% 提取日期(第 7 到第 8 位)。
  4. 计算前一天的日期

    • 通过 PowerShell 脚本计算前一天的日期:
      $date = Get-Date '%year%-%month%-%day%' 
      $yesterday = $date.AddDays(-1).ToString('yyyy-MM-dd')
      • Get-Date '%year%-%month%-%day%' 将当前日期字符串转换为 PowerShell 的日期对象。
      • .AddDays(-1) 方法计算前一天的日期。
      • .ToString('yyyyMMdd') 格式化输出为 yyyyMMdd 的形式(例如:20250101),这里可以根据自己的需求来改变输出的格式。
    • 将结果输出到一个临时文件 temp_date.txt 中,再通过 set /p 命令将其读取到 yesterday 变量中。
  5. 输出时间

    • 使用 echo 命令将最终构造的时间字符串 time 输出到屏幕,显示格式为 yyyyMMdd(例如:20250101)。
  6. 暂停

    • pause 命令让脚本执行完后暂停,等待用户按任意键继续。这使得用户能够查看输出结果。

示例输出

假设当前日期为 2025年1月2日,则该脚本的输出将是:

Yesterday's date is: 20250101

总结

该批处理脚本通过结合 Windows 内建命令wmic 和 PowerShell 脚本,成功地提取当前日期并计算出前一天的日期。它能够灵活处理日期字符串,并以用户指定的格式输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值