[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

在batch脚本中拿到了两个日期时间 格式都是YYYY/MM/DD HH:MM:SS形式的
比如:
date1=2023/05/12 10:00
date2=2022/06/27 18:00
有什么方法可以简便的比较日期时间先后吗?比如调用powershell的方法也可以
btw:因为这种日期时间格式是用%%~ti获取的文件时间,没有精确到秒数,有什么精确到秒数的方法吗?

有些文不对题
如果要获取系统时间 用mshta可以得到时间戳 精确到毫秒
文件修改时间如果只有到分 那你是无论如何也获取不到秒的

TOP

  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
复制代码

这里的日期应该可以直接比较,你试一下
bat小白,请多指教!谢谢!

TOP

回复 2# jyswjjgdwtdtj


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

TOP

回复 3# 77七


    谢谢,当天的日期确实可以比较(日期一样只有小时分钟不同),不过不知道涉及到跨月份或跨年的能否正确比较成功,我在尝试中

TOP

回复 4# cwayne


    理论上来讲是有的
毕竟打开文件的“属性”里显示的就是到秒的

TOP

  1. set shell=createobject("shell.application")
  2. set p=shell.namespace(17).parsename("文件位置 错误下一条语句会报错")
  3. msgbox p.modifydate
复制代码
vbs
应该对吧……

TOP

如果没有简单的办法,可以考虑下 第三方工具 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
复制代码
bat小白,请多指教!谢谢!

TOP

回复 8# 77七


    目前没查询到有简单的办法,不管是获取精确到秒的时间还是时间戳,安装第三方工具不知道是否可行因为脚本是需要下发到其他电脑,可能这个工具也要下发

TOP

回复 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
复制代码
bat小白,请多指教!谢谢!

TOP

返回列表