Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 两个时间戳之间的文件列表_File_Batch File - Fatal编程技术网

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

File 两个时间戳之间的文件列表,file,batch-file,File,Batch File,使用下面的代码,我们可以列出两个日期之间的文件。 但是我们也需要检查时间戳。i、 e.列出日期和时间之间的所有文件 wmic datafile where "drive='%drive%' and path='%folder:\=\\%' and creationdate>'%start%' and creationdate<'%end%'" get creationdate, name, size wmic数据文件,其中“驱动器='%drive%'和路径='%folder:\=\

使用下面的代码,我们可以列出两个日期之间的文件。 但是我们也需要检查时间戳。i、 e.列出日期和时间之间的所有文件

wmic datafile where "drive='%drive%' and path='%folder:\=\\%' and creationdate>'%start%' and creationdate<'%end%'" get creationdate, name, size
wmic数据文件,其中“驱动器='%drive%'和路径='%folder:\=\\%'和creationdate>'%start%'和creationdate检查
要打印当前目录中两个日期之间的文件,请在中尝试:

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

在WMI查询中使用时间戳很麻烦。您必须以
'yyyyymmdd'
格式指定日期,或者以
'yyyyymmddhhmmss.fffffff szzz'格式指定日期和时间。

在哪里

  • 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%
字符串的日期时间值格式正确。

另一种更简单(更快)的方法是:

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

@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
),或者稍微调整
,就可以解决区域设置问题。”令牌=1-7*
part.

wmic将非常慢…@npocmaka-wmic数据文件性能并不差,只要指定了驱动器和完整路径。感谢您的回复。但这对我不起作用。任何其他解决方案。@echo off setlocal set“drive=%d1”set“folder=%pnx1\”set/a“start=%2,end=%3”wmic数据文件,其中“drive='%drive%'和path='%folder:\=\\%'和creationdate>'%start%'和creationdate@user4809060-时间戳是什么意思?日期+时间20150402010712(YYYYMMDDHHmmss)我已尝试查找。-键入f-newermt“2014-10-08 10:17:00”!-newermt“2014-10-08 10:53:00”。但它也不起作用。任何快速帮助。Thanks@user4809060还请检查此项-它基本上是相同的工具,但使用的是
.NET
,日期格式更方便。您可以将其更新为适合您的文件格式。我尝试使用DateTime。但我得到了“无效数字”。数字的精度限制为32位“作为错误。是否有其他方法列出不使用的文件?”WMI@user4809060-我不知道该说什么。我使用了正确格式的日期时间值的精确代码,它工作得非常好。定义开始和结束时是否使用了SET/A?这将不起作用-您需要使用一个正常的集合,因为您定义的是一个字符串,而不是一个数字。