脚本目的
该脚本的主要功能是获取当前日期,并计算出前一天的日期,然后将计算结果进行输出。
脚本内容
@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
脚本解析
-
关闭回显 (
@echo off
)@echo off
命令用于关闭命令行窗口中的命令回显,只显示脚本中的输出内容,避免屏幕上杂乱无章的信息。
-
获取当前日期时间 (
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
中。
- 使用
-
提取当前日期的年、月、日部分
- 使用
set
命令将datetime
字符串中的年、月、日部分提取并赋值给year
、month
和day
变量:%datetime:~0,4%
提取年份(前 4 位)。%datetime:~4,2%
提取月份(第 5 到第 6 位)。%datetime:~6,2%
提取日期(第 7 到第 8 位)。
- 使用
-
计算前一天的日期
- 通过 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
变量中。
- 通过 PowerShell 脚本计算前一天的日期:
-
输出时间
- 使用
echo
命令将最终构造的时间字符串time
输出到屏幕,显示格式为yyyyMMdd
(例如:20250101
)。
- 使用
-
暂停
pause
命令让脚本执行完后暂停,等待用户按任意键继续。这使得用户能够查看输出结果。
示例输出
假设当前日期为 2025年1月2日
,则该脚本的输出将是:
Yesterday's date is: 20250101
总结
该批处理脚本通过结合 Windows 内建命令wmic 和 PowerShell 脚本,成功地提取当前日期并计算出前一天的日期。它能够灵活处理日期字符串,并以用户指定的格式输出。