两个时间戳之间的文件列表

时间:2015-04-20 08:28:55

标签: file batch-file

使用以下代码,我们可以列出两个日期之间的文件。 但我们还需要检查时间戳。即列出日期和日期之间的所有文件。时间。

wmic datafile where "drive='%drive%' and path='%folder:\=\\%' and creationdate>'%start%' and creationdate<'%end%'" get creationdate, name, size

3 个答案:

答案 0 :(得分:0)

检查FileTimeFilterJS.bat 要在当前目录中的两个日期之间打印文件,请尝试使用:

call FileTimeFilterJS "." -beginDate "September 1, 2014 10:15 AM" -endDate "November 1, 2014 10:15 PM"

答案 1 :(得分:0)

在WMI查询中使用时间戳是一件痛苦的事。您必须以'YYYYMMDD'格式指定日期,或以'YYYYMMDDhhmmss.ffffffSZZZ'

格式指定日期和时间

其中

  • YYYY =完整的四位数年份
  • MM =两位数的月份
  • DD =每月两位数
  • hh = 24小时格式的两位数小时
  • mm =两位数分钟
  • ss =两位数秒
  • .ffffff =六位小数秒(微秒)
  • SZZZ =时区表示为与UTC时间的分钟偏移量
    • S =时区标志,+-
    • ZZZ =三位数分钟

表达日期时,字符串长度必须正好为6个字符。例如,2015年1月15日表示为'20150115'

表达日期时,字符串必须长度为25个字符。
例如,2015年1月15日,东部标准时间下午3:14表示为'20150115151400.000000-300'

因此,您现有的查询不必更改。您只需确保%start%%end%字符串格式正确的日期时间值。

答案 2 :(得分:0)

另一个更简单(也更快!)的方法就是这个:

编辑:我修改了以前的代码,因此它现在处理创建日期,而不是最后修改的日期。

@echo off
setlocal EnableDelayedExpansion

if "%~2" neq "" goto begin
echo Usage: %0  YYYYMMDDHHMMstart  YYYYMMDDHHMMend
goto :EOF

:begin
for /F "skip=5 tokens=1-7* delims=/: " %%a in ('dir /A-D /T:C *.*') do (
   if "%%h" equ "" goto break
   set "hour=%%d"
   if "%%f" equ "p.m." set /A "hour=(1%%d+12)%%100"
   set "fileDate=%%c%%a%%b!hour!%%e"
   if "!fileDate!" geq "%~1" if "!fileDate!" leq "%~2" echo %%a/%%b/%%c  %%d:%%e %%f   %%g   %%h
)
:break

是的,我知道这种方法不包含秒并且它依赖于语言环境,但对于OP和一定数量的用户来说可能就足够了。可以通过将%%c%%a%%b顺序中的简单更改修改为适当的(例如%%c%%b%%a)以及"tokens=1-7*部分中的小调整来修复区域设置问题。