批处理文件在 Windows 上减去小时当前时间
batch file Subtracting hour current time on Windows
例如,我需要从 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
我找到了几个批处理脚本来减去一天,但没有小时或分钟。
它不完全是 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
批处理文件不适合 date/time 操作。花很多时间处理类似的问题,我建议使用外部工具(例如 window unix 端口 'date' 命令)并对时间戳执行任何操作。
例如,我需要从 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
我找到了几个批处理脚本来减去一天,但没有小时或分钟。
它不完全是 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
批处理文件不适合 date/time 操作。花很多时间处理类似的问题,我建议使用外部工具(例如 window unix 端口 'date' 命令)并对时间戳执行任何操作。