如果使用wmic 在bat脚本中获取当前系统时间?

如果必须使用 wmic 来实现计时功能,那么虽然无法直接通过 wmic os get tickcount 获取滴答计数(因为在部分系统中不支持),可以通过 wmic 获取系统的当前时间,然后通过日期和时间的计算间接实现计时功能。

以下是基于 wmic 获取当前时间的解决方案:


脚本示例:使用 wmic 获取当前时间

bat 复制代码
@echo off
setlocal enabledelayedexpansion

:: 获取开始时间(格式:YYYYMMDDHHMMSS)
for /f "tokens=2 delims==" %%A in ('wmic os get localdatetime /value ^| find "="') do set start_time=%%A

:: 执行你的命令
echo 执行命令中...
ping 127.0.0.1 -n 3 > nul

:: 获取结束时间(格式:YYYYMMDDHHMMSS)
for /f "tokens=2 delims==" %%A in ('wmic os get localdatetime /value ^| find "="') do set end_time=%%A

:: 计算时间差
call :TimeDiff %start_time% %end_time%
goto :EOF

:TimeDiff
:: 参数解析
set start=%1
set end=%2

:: 提取起始时间和结束时间的各部分
set /a start_year=!start:~0,4!, start_month=!start:~4,2!, start_day=!start:~6,2!
set /a start_hour=!start:~8,2!, start_minute=!start:~10,2!, start_second=!start:~12,2!
set /a end_year=!end:~0,4!, end_month=!end:~4,2!, end_day=!end:~6,2!
set /a end_hour=!end:~8,2!, end_minute=!end:~10,2!, end_second=!end:~12,2!

:: 转换为秒进行计算(以天为基础)
set /a start_total=(start_year*31536000)+(start_month*2592000)+(start_day*86400)+(start_hour*3600)+(start_minute*60)+start_second
set /a end_total=(end_year*31536000)+(end_month*2592000)+(end_day*86400)+(end_hour*3600)+(end_minute*60)+end_second

:: 计算差值(秒)
set /a elapsed_seconds=end_total-start_total

:: 输出结果
echo 命令运行时间:%elapsed_seconds% 秒
exit /b 0

核心逻辑:

  1. 获取当前时间

    • 通过 wmic os get localdatetime 提取当前时间,格式为 YYYYMMDDHHMMSS.ffffff
    • 使用 for /ffind "=" 提取时间部分。
  2. 时间格式解析

    • 提取时间的年份、月份、日期、小时、分钟、秒等部分。
    • 将时间转换为以秒为单位的时间总和。
  3. 计算时间差

    • 使用起始时间和结束时间的秒总和进行差值计算。
  4. 跨天支持

    • 支持跨天运行,基于绝对秒数计算时间差。

优点:

  • 兼容性高,完全基于 wmic
  • 支持跨天的时间差计算。

注意事项:

  • 时间转换假设每月固定为 30 天,未考虑闰年等特殊情况。如果需要高精度的日期计算,可以通过增加判断逻辑来支持。
相关推荐
非凡ghost1 小时前
可拓浏览器:给手机浏览器装上“外挂“!2W+拓展+AI搜索,玩出无限可能!
windows·智能手机·音视频·firefox
小神.Chen1 小时前
如何删除远程桌面的连接记录,一键清理mstsc远程桌面连接的记录
windows
John_ToDebug2 小时前
WebHostView 与 TabStrip 交互机制深度解析
c++·chrome·windows
L1624763 小时前
Win11 共享→Windows Server 访问故障总结(极简可复用)
开发语言·windows·php
love530love3 小时前
ComfyUI MediaPipe 终极填坑:解决 incompatible function arguments 报错,基于代理模式的猴子补丁升级版
人工智能·windows·comfyui·mediapipe·猴子补丁·monkey patch·python 3.12
今夕资源网3 小时前
Windows Terminal更舒适的命令行环境 仅11MB 支持并行运行WSLLinux子系统 github开源项目
windows·github·命令行·cmd·terminal
java_logo5 小时前
SiYuan 思源笔记 Docker 部署终极指南:Windows+Linux 双平台
windows·笔记·docker·思源笔记·思源笔记部署·docker部署思源笔记·思源笔记文档
测试员周周7 小时前
【AI测试系统】第1篇:LangGraph 实战:用 State Graph 搭建 AI测试流水线(4 步编排 + RAG 增强 + 完整代码)
linux·windows·python·功能测试·microsoft·单元测试·多轮对话
祖国的好青年7 小时前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js
love530love7 小时前
Python 3.12 解决 MediaPipe “no attribute ‘solutions‘” 终极方案:基于全版本硬核实测的避坑指南
开发语言·人工智能·windows·python·comfyui·mediapipe·solutions