繁体   English   中英

使用Windows命令提示符根据扩展名和日期搜索文件

[英]Search files according to extension and date using Windows command prompt

我正在尝试对我的文件进行搜索以查找HTML和最新修改日期,我尝试输出的格式为:

文件和文件名的路径,最后修改的日期-按字母顺序排序。 X:\\mydirectory\\myfile.html, 18-09-2014 18:15

我使用了以下字符串,但是由于某种原因,我无法获取文件的最后修改日期,即使我四处移动属性,我也不知道失败的地方。

dir X:\*.html /s /o:n /t:w /b /a:-d   >> "X:\list-all-html-files.txt"  

任何帮助表示赞赏

请使用以下命令获取今天前一天修改过的文件。

Z:> FORFILES / s / M * .html / C“ cmd / c echo @path在@fdate @ftime上更改” / D -1 >> C:\\ PerlCompiler \\ list-all-html-new-999.txt

有关更多参考,请通过链接http://ss64.com/nt/forfiles.html

FORFILES.exe(在Vista / Windows7 / 2008中,通过XP的Resource Kit提供本机命令)

-Vinay Mishra

/b输出只是带有路径的纯文件名,因此那里没有日期信息。 尽管您的语法会起作用,但它的语法有点奇怪(例如,不需要冒号)。 同时,让我们一次迈出一步。

我只获取文件名的方法(第一步)是:

dir x:\*.html /s | find ".html" | sort > X:\list-all-html-files.txt

在这种情况下,由于不需要空格,因此不需要在输出文件名两边加上引号。 否则,这是个好主意。 上次修改的日期是DIR输出中默认提供的日期,因此您也无需指定/tw 您将要对输出进行排序,因为它将在各个目录中进行扫描,而不是仅确保每个目录中的名称都使用/on进行排序。 假设您没有真正附加到另一个文件,则希望使用>而不是>>以便每次运行都重新开始,或者使用下面的代码在开始之前删除输出。 您也不需要/ad (我不认为),因为您要指定.html扩展名,除非您认为自己的目录名不太可能带有.html扩展名。

但是您确实说确实需要完整的路径以及详细信息,因此您需要使用FOR循环并提取名称,然后单独获取其余信息。 假设它在批处理文件中(这就是为什么我使用%% I而不是%I的原因)。 %%~ti 〜ti提供时间戳,%%〜dpnxI生成级联的驱动器+路径+文件名+扩展名:

@echo off
setlocal
set OUTFILE=list-all-html-files.txt
if exist %OUTFILE% del %OUTFILE%
for /f "tokens=*" %%I in ('dir x:\*.html /s /b ^| sort') do echo %%~dpnxI   %%~tI >> %OUTFILE%
endlocal

我使用了局部变量OUTFILE,因此可以定义一次,但是可以在代码中的多个地方使用。 %%~dpnxI%%~tI %%~dpnxI之间有一个TAB字符,可以将输出粘贴到例如Excel中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM