用vbs实现按创建日期的顺序列出一个文件夹中的所有文件

2019-01-16 09:29:34王振洲


Set objInputFormat = CreateObject("MSUtil.LogQuery.FileSystemInputFormat")
objInputFormat.Recurse = 0

如果我们确实要检索任意或所有子文件夹的值,该怎么办?在该情况下,我们必须要做的所有事情就是将 Recurse 属性的值设置为 -1:

objInputFormat.Recurse = -1

同时,下列两行代码创建输出对象,并告诉 Log Parser 显示所有数据而不要暂停:

Set objOutputFormat = CreateObject("MSUtil.LogQuery.NativeOutputFormat")
objOutputFormat.rtp = -1

或者,我们可以告诉 Log Parser 显示 10 行数据,然后暂停,直到我们按键盘上的某个键,然后再显示下 10 行数据。若要按每 10 行一批的规律显示数据,我们必须要做的所有事情就是将 rtp 属性的值设置为 10:

objOutputFormat.rtp = 10

接下来配置 SQL 查询以检索文件信息。如果您对 SQL 有一些了解,此查询应该相对容易分析一些;如您所见,我们正要查询 C:Scripts 中所有文件的 Name 和 CreationTime。此外,我们要使返回的数据按创建日期和时间顺序排列,最先创建的文件排在最前面:

strQuery = "SELECT Name, CreationTime FROM 'C:Scripts*.*' " & _
    "WHERE NOT Attributes LIKE '%D%' ORDER BY CreationTime DESC"

此查询中唯一不寻常的就是 WHERE 子句:WHERE NOT Attributes LIKE '%D%'。不用作过多的解释,此子句筛选出文件夹,从而只返回文件。包含 Directory 属性的文件系统对象就是文件夹;因为我们不想要文件夹,所以使用 WHERE NOT 语法清除拥有 Directory(缩写为 %D%)属性的所有对象。

最后,调用 ExecuteBatch 方法来运行查询并将返回的数据写入命令窗口。一两秒钟之后,我们将获得如下所示的内容:


我们不需要输入任何特殊的命令就可以获得这一精密的表格输出;Log Parser 为我们处理所有问题。它真是太棒了,不是吗?

诚然,我们不必费很大力气就可以获得这些结果。而且它既快捷又简便。您可以这么来看:任何人都不必知道我们不努力工作,不是吗?

您可能感兴趣的文章:

用VBSrcipt判断是否是日期用vbs判断一个日期是否在指定的时段内用vbs实现的简单的服务器文件备份办法压缩文件名自动按日期命名vbs下通过日期查找文件夹的代码VBS的字符串及日期操作相关函数用VBS修改(设置)系统时间和日期的代码vbs获取当前时间日期的代码使用VBS获取当前日期的前一天 并修正输出格式