找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20956|回复: 9

[日期时间] 求助批处理文件日期时间比较问题

[复制链接]
发表于 2023-5-12 18:08:43 | 显示全部楼层 |阅读模式
在batch脚本中拿到了两个日期时间 格式都是YYYY/MM/DD HH:MM:SS形式的
比如:
date1=2023/05/12 10:00
date2=2022/06/27 18:00
有什么方法可以简便的比较日期时间先后吗?比如调用powershell的方法也可以
btw:因为这种日期时间格式是用%%~ti获取的文件时间,没有精确到秒数,有什么精确到秒数的方法吗?
发表于 2023-5-12 21:33:35 | 显示全部楼层
有些文不对题
如果要获取系统时间 用mshta可以得到时间戳 精确到毫秒
文件修改时间如果只有到分 那你是无论如何也获取不到秒的
发表于 2023-5-13 03:05:19 | 显示全部楼层
  1. @echo off
  2. set "date1=2023/05/12 10:00"
  3. set "date2=2022/06/27 18:00"
  4. if "%date1%" gtr "%date2%" (
  5.         echo "%date1%" gtr "%date2%"
  6. ) else (
  7.         echo "%date1%" leq "%date2%"
  8. )
  9. pause
复制代码

这里的日期应该可以直接比较,你试一下
 楼主| 发表于 2023-5-15 10:49:47 | 显示全部楼层
回复 2# jyswjjgdwtdtj


    没表达清,是两个问题,第一个问题是主楼的时间格式(如2023/05/15 10:47) 批处理能正确比较吗?第二个问题是现在通过for %%i in ...和set time = %%~ti 拿到了文件创建时间,格式是上面那样的且只精确到分钟,有没有获取精确到秒的文件创建时间方法?期待大佬指教
 楼主| 发表于 2023-5-15 10:50:40 | 显示全部楼层
回复 3# 77七


    谢谢,当天的日期确实可以比较(日期一样只有小时分钟不同),不过不知道涉及到跨月份或跨年的能否正确比较成功,我在尝试中
发表于 2023-5-16 19:04:19 | 显示全部楼层
回复 4# cwayne


    理论上来讲是有的
毕竟打开文件的“属性”里显示的就是到秒的
发表于 2023-5-16 19:07:02 | 显示全部楼层
  1. set shell=createobject("shell.application")
  2. set p=shell.namespace(17).parsename("文件位置 错误下一条语句会报错")
  3. msgbox p.modifydate
复制代码
vbs
应该对吧……
发表于 2023-5-16 23:40:27 | 显示全部楼层
如果没有简单的办法,可以考虑下 第三方工具 http://bcn.bathome.net/tool/forfiles.exe  ,这个是精确到秒的
  1. @echo off
  2. for /f tokens^=1-2*delims^=^" %%a in ('FORFILES /m *.txt /C "cmd /c echo @path@file@fdate @ftime"') do (
  3.         echo %%a
  4.         echo %%b
  5.         echo %%c
  6. )
  7. pause
复制代码
 楼主| 发表于 2023-5-23 10:33:19 | 显示全部楼层
回复 8# 77七


    目前没查询到有简单的办法,不管是获取精确到秒的时间还是时间戳,安装第三方工具不知道是否可行因为脚本是需要下发到其他电脑,可能这个工具也要下发
发表于 2023-5-23 10:38:53 | 显示全部楼层
回复 9# cwayne


   chatgpt
  1. @echo off
  2. set "filename=path\to\your\file"   REM 将“path\to\your\file”替换为您要查询的文件路径

  3. for /f "delims=" %%a in ('powershell -Command "(Get-Item '%filename%').LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss')"') do set "last_modified_time=%%a"
  4. echo %last_modified_time%
  5. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 20:04 , Processed in 0.016246 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表