如果使用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 天,未考虑闰年等特殊情况。如果需要高精度的日期计算,可以通过增加判断逻辑来支持。
相关推荐
非凡ghost13 小时前
猫眼浏览器(Chrome内核增强版浏览器)官方便携版
前端·网络·chrome·windows·软件需求
熊文豪18 小时前
Windows安装RabbitMQ保姆级教程
windows·分布式·rabbitmq·安装rabbitmq
搬砖的小码农_Sky18 小时前
Windows操作系统上`ping`命令的用法详解
运维·网络·windows
Kiri霧1 天前
Rust模式匹配详解
开发语言·windows·rust
程序设计实验室1 天前
使用命令行删除 Windows 网络映射驱动器
windows
用户31187945592181 天前
Windows 电脑安装 XTerminal 1.25.1 x64 版(带安装包下载关键词)
windows
Logintern091 天前
windows如何设置mongodb的副本集
数据库·windows·mongodb
Chandler241 天前
一图掌握 操作系统 核心要点
linux·windows·后端·系统
ajassi20001 天前
开源 C# 快速开发(十七)进程--消息队列MSMQ
windows·开源·c#
Python私教1 天前
5分钟上手 MongoDB:从零安装到第一条数据插入(Windows / macOS / Linux 全平台图解)
windows·mongodb·macos