使用命令行按日期搜索

发布于 2025-01-04 15:42:40 字数 62 浏览 2 评论 0原文

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

Is there any way to search for files in a directory based on date? I want to find all files with created date greater than a specific date, is it possible to do it with dir command?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

茶色山野 2025-01-11 15:42:40

刚刚发现了 forfiles 命令。

forfiles /s /m *.log /d -7 /c "cmd /c echo @path"

将列出所有子目录中超过 7 天修改的所有日志文件,尽管它似乎不查看创建日期。它确实支持指定特定日期。

请参阅 forfiles /? 了解更多信息。

Just discovered the forfiles command.

forfiles /s /m *.log /d -7 /c "cmd /c echo @path"

Will list all the log files modified more than seven days old, in all subdirectories, though it does not appear to look at the create date. It does support specifying a specific date.

See forfiles /? for more info.

山人契 2025-01-11 15:42:40

对我来说更简单的方法是这样的

dir /s *.xlsx | find "07/14/2016"

an easier way for me is something like

dir /s *.xlsx | find "07/14/2016"
绮筵 2025-01-11 15:42:40

dir 本身无法按日期过滤,但您可以使用 for 命令解析 dir 的输出。如果在您所在的国家/地区 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
)

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

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

@Echo Off

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

dir by itself can not filter by date, but you can parse the output of dir using for command. If in your country dir prints the date in YMD format, then you only need to compare it with given date. If the order of date parts is different, then you have to use another for command to parse the date and change it to YMD. This will display a list of files modified after 5th Februrary.

@Echo Off

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

if does standard string comparison, so at the end you can get additional line if summary line passes the comparison. To avoid it, you can use if %%A GTR 2012-02-05 if exist %%B echo %%A %%B

EDIT:
There is even better approach which avoids parsing of dir output and also allows searching by time, not only by date:

@Echo Off

for /r %%A in (*) do (
  if "%%~tA" GTR "2012-02-05 00:00" echo %%~tA %%A
)
等往事风中吹 2025-01-11 15:42:40

嗯,据我所知,你不能,但这种想法会起作用,但仍然毫无用处,除非你的日期范围很短;)

for /R %a in (01 02 03 04 05) do dir | find "02/%a/2012"

Well you cant as far as i know, but this sort of think will work, but still really useless unless you have a short date range ;)

for /R %a in (01 02 03 04 05) do dir | find "02/%a/2012"
远山浅 2025-01-11 15:42:40

使用 PowerShell 可以轻松做到这一点。我知道您的问题是关于 cmd 的,但 PS 包含在 Windows 7 及更高版本中。它还可以安装在 XP 和 Vista 上。

使用 Get-ChildItem 命令(别名为 dir)获取所有文件。将输出通过管道传输到 Where-Object 命令(别名为 ?),以返回日期大于 (-gt) 特定日期的文件日期。

对于 Powershell 2.0(Windows 7 上的默认设置),您必须使用脚本块:

dir -file | ? {$_.LastWriteTimeUtc -gt ([datetime]"2013-05-01")}

对于 Powershell 3.0(Windows 8 上的默认设置)及更高版本,您可以使用以下更简单的语法:

dir -file | ? LastWriteTimeUtc -gt ([datetime]"2013-05-01")

dir -file 命令返回一个集合System.IO.FileInfo 对象。该文件对象具有许多可用于复杂过滤的属性(文件大小、创建日期等)。有关文档,请参阅 MSDN

This is easy to do with PowerShell. I know that your question was about cmd, but PS is included in windows 7 and later. It can also be installed on XP and Vista.

Use the Get-ChildItem command (aliased as dir) to get all files. Pipe the output to the Where-Object command (aliased as ?) to return files where the date is greater then (-gt) a specific date.

For Powershell 2.0 (default on Windows 7), you must use a scriptblock:

dir -file | ? {$_.LastWriteTimeUtc -gt ([datetime]"2013-05-01")}

For Powershell 3.0 (default on Windows 8) and up you can use this simpler syntax instead:

dir -file | ? LastWriteTimeUtc -gt ([datetime]"2013-05-01")

The dir -file command returns a collection of System.IO.FileInfo objects. This file object has many properties that you can use for complex filtering (file size, creation date, etc.). See MSDN for documentation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文