使用命令行按日期搜索

Kar*_*zin 14 search cmd date find dir

有没有办法根据日期搜索目录中的文件?我想查找创建日期大于特定日期的所有文件,是否可以使用dir命令执行此操作?

Dav*_*ave 40

刚刚发现了这个forfiles命令.

forfiles /s /m *.log /d -7 /c "cmd /c echo @path"
Run Code Online (Sandbox Code Playgroud)

将在所有子目录中列出已修改超过七天的所有日志文件,但它似乎不会查看创建日期.它确实支持指定特定日期.

有关详情forfiles /?,请参阅.


MBu*_*MBu 5

dir本身不能按日期筛选,但是您可以解析dirusing for命令的输出。如果在您的国家/地区dir以YMD格式打印日期,则只需将其与给定日期进行比较。如果日期部分的顺序不同,则必须使用另一个for命令来解析日期并将其更改为YMD。这将显示2月5日之后修改的文件列表。

@Echo Off

for /f "usebackq tokens=1,4 skip=5" %%A in (`dir /-c`) do (
  if %%A GTR 2012-02-05 echo %%A %%B
)
Run Code Online (Sandbox Code Playgroud)

if执行标准的字符串比较,因此,如果摘要行通过比较,则最后可以得到其他行。为了避免这种情况,您可以使用if %%A GTR 2012-02-05 if exist %%B echo %%A %%B

编辑:还有一种更好的方法可以避免解析dir输出,还可以按时间搜索,而不仅按日期搜索:

@Echo Off

for /r %%A in (*) do (
  if "%%~tA" GTR "2012-02-05 00:00" echo %%~tA %%A
)
Run Code Online (Sandbox Code Playgroud)


小智 5

对我来说更简单的方法是

dir /s *.xlsx | find "07/14/2016"
Run Code Online (Sandbox Code Playgroud)