批处理文件在Windows上减去小时当前时间

时间:2016-10-19 00:49:59

标签: datetime batch-file windows-7 date-manipulation

我需要在Windows 7上的.bat文件中减去当前时间1小时。

我是这样做的。

set day=%date:~0,2%
set month=%date:~-7,2%
set year=%date:~-4,4%
:: ———————————————————————–
set hour=%time:~0,2%

set /A hour= hour - 1

if %hour% lss 0 set hour=23
if %hour% lss 10 set hour=0%hour%

echo %year%-%month%-%day% %hour%:00

但是问题是,在前一个月前一天减去结果​​时会得到一致性。例如,这个日期, 2016-03-01 00:05 我得到 2016-03-01 23:05 。我需要 2016-02-29 23:05

我找到了几个批处理脚本来减去一天,但没有任何小时或分钟。

2 个答案:

答案 0 :(得分:1)

也许它并不完全是Batch,但我发现有很多例外和特殊情况,它不值得重新编码Batch中的所有内容,特别是当它已被删除时之前做过。我喜欢像这样调用Powershell。

for /f "delims=" %%a in ('"powershell [DateTime]::Now.AddHours(-1).ToString('yyyy-MM-dd hh:mm')"') do echo %%a

输出类似于:2016-10-18 02:05

答案 1 :(得分:0)

批处理文件在日期/时间操作方面表现不佳。花费大量时间处理类似问题,我建议使用外部工具(例如,作为unix'date'命令的窗口),并对时间戳执行任何操作。