在批处理脚本中显示2个日期之间的文件

时间:2012-10-03 12:51:05

标签: batch-file dir

我需要使用批处理脚本在两个日期(例如日期23-sep-2012到30-sep-2012)之间显示文件。

文件夹中有大约50万个文件。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

使用文件时间戳很麻烦。最简单的解决方案是使用WMIC。

这是一个简单的脚本,可以执行您想要的操作。可以轻松修改它以使用CreationDate而不是LastModified日期。您还可以在输出中添加和减去其他列。键入wmic datafile get /?以获取可用列的列表(从名称中删除空格)。如果您希望按日期排序结果,则可以将输出传送到SORT。

日期必须以YYYYMMDD格式指定。

@echo off
:listFilesBetweenDates  Path  StartDate  EndDate
::
::  List files found in directory Path with last modified date between
::  StartDate and EndDate
::
::  path = Directory to list. Use . for current directory
::
::  startDate = YYYYMMDD format
::
::  endDate = YYYYMMDD format
::
setlocal
set "drive=%~d1"
set "folder=%~pnx1\"
set /a "start=%~2, end=%~3+1"
wmic datafile where "drive='%drive%' and path='%folder:\=\\%' and lastModified>='%start%' and lastModified<'%end%'" get lastModified, name


样本用法 - 在07-SEP-2012和17-SEP-2012之间的当前目录中列出文件

D:\test>listFilesBetweenDates . 20120907 20120917
LastModified               Name
20120917155412.408435-240  d:\test\idlist.txt
20120910160033.573531-240  d:\test\input.txt
20120907180451.138275-240  d:\test\myurls.txt
20120911115129.949457-240  d:\test\replace.bat
20120917155853.541247-240  d:\test\temp1.txt
20120917162208.635197-240  d:\test\temp2.txt
20120917162217.595287-240  d:\test\temp3.txt
20120911141557.105798-240  d:\test\test,2.txt
20120910160622.664376-240  d:\test\test.vbs
20120907161948.016121-240  d:\test\test3.bat
20120910153717.558353-240  d:\test\test3.txt


样本用法:按照上次修改日期的升序排序26-SEP-2012和27-SEP-2012之间的临时目录中的文件

D:\test>listFilesBetweenDates "%temp%" 20100926 20120927 | sort

20120926085420.368034-240  d:\users\xxxxxx\temp\~df8a4e7af0245496b2.tmp
20120926085422.630049-240  d:\users\xxxxxx\temp\fxsapidebuglogfile.txt
20120926085433.781136-240  d:\users\xxxxxx\temp\sof8436.tmp
20120926085436.861167-240  d:\users\xxxxxx\temp\cvr941b.tmp.cvr
20120926103842.351663-240  d:\users\xxxxxx\temp\~dfe34cb61c66a1dcd7.tmp
20120926181118.453780-240  d:\users\xxxxxx\temp\~dfd0009f24c8c5eb31.tmp
20120927100903.382946-240  d:\users\xxxxxx\temp\~df559b9f2b2763ac3f.tmp
20120927100915.210126-240  d:\users\xxxxxx\temp\cvr3d51.tmp.cvr
20120927100918.680196-240  d:\users\xxxxxx\temp\sof47cf.tmp
20120927144827.689200-240  d:\users\xxxxxx\temp\tmpdbc8.tmp
20120927144828.169209-240  d:\users\xxxxxx\temp\tmpddad.tmp
20120927184908.066005-240  d:\users\xxxxxx\temp\~df401234aa9008c5e1.tmp
LastModified               Name