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

问:
你好,脚本专家!如何按创建日期的顺序列出一个文件夹中的所有文件?

-- CL

答:
你好,CL。您知道,如果我们雄心勃勃并且努力工作,我们会坐下来为您写一个脚本,以使用 WMI 返回一个文件夹中的所有文件。该脚本将获取有关所有这些文件的信息,并将该数据存储在未连接的记录集中。然后,在该记录集中设置排序顺序以按创建日期和时间对文件进行排列。(接着,我们进行大量的重复性工作,以将 WMI 的日期时间值转换为易读的日期时间格式。)最后,我们将记录集中的所有值回显到屏幕上。它需要花费大量时间并编写许多代码,但最终您会得到已排序的文件列表,而且每个人都会说“哇,那些脚本专家真是为读者尽心尽力,不是吗?”

而事实上,我们并非雄心勃勃和努力工作;我们只是脚本专家。作为脚本专家,我们一直在寻找最快速、最简便的解决问题的方法。因此,我们没有去写一个冗长而复杂的脚本,而是弄来了一份 Log Parser 2.2,并匆忙完成了以下几行代码:

复制代码 代码如下:

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

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

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

猜猜看?此脚本不但能正常工作,还能返回文件列表(按创建日期和时间排序),而不管实际情况怎样。太酷了。

当然,我们通常建议不使用非操作系统内置的解决方案;因为我们不想让人们下载和安装一些不是绝对必需的东西。然而,当要列举文件时,很有必要下载和安装 Log Parser;当您不得不获得有关一组文件的信息时,您会发现 Log Parser 方法优于 WMI 或 FileSystemObject。Log Parser 的七八行代码比得上 WMI 的六七十行代码吗?我们会把决定权留给您。

我们不会花时间介绍有关 Log Parser 的所有信息;有关详细信息,您可以参阅“脚本故事”专栏您需要的所有内容就是日志(即 Log Parser)。现在,我们只需注意,脚本从创建 Log Parser 对象的实例开始,使用易记忆的名称 MSUtil.LogQuery 以便于更好的记忆。然后,我们创建两个其他对象,第一个指定我们正在使用的对象(在此情况下为文件系统,虽然我们也可以使用事件日志、Active Directory、注册表和其他项),第二个指明我们要使用的输出类型(在此示例脚本中,我们要做的所有事情就是将数据写入命令窗口)下列两行代码创建输入对象,并告诉 Log Parser 不从任何子文件夹检索文件:

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 为我们处理所有问题。它真是太棒了,不是吗?

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

时间: 2024-09-17 03:39:06

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

PHP 列出当前文件夹中所有目录

  不想每次测试 PHP 时都开虚拟机,于是在电脑上用 XAMPP 搭建了测试平台. 我现在已经把我的博客数据导到本地,准备写一个自己的模板. 因为我习惯给不同的项目建一个文件夹,而在根目录不想放其他东西,为了能够更方便地进入各个项目,我就想在根目录的里建个索引,一个项目对应一个超链接.用静态页固然可以,但是如果我一新增项目岂不是要更新这个静态页?程序猿一般都很懒,于是写了个小程序,用来列出当前文件夹中的所有目录. ".$filename[$i]." /n"; } } 很简单

用vbs实现取消隐藏文件夹中的所有文件_vbs

问: 您好,脚本专家!如何运行脚本取消隐藏文件夹中的所有文件? -- GA 答: 您好,GA.您知道我们中的一位脚本专家在年少时和邻居家的其他小孩花费无数的时间玩各种捉迷藏.事实上,这位脚本专家仍清晰地记得躺在浅沟中,让其他组的人从他身上走过,却不知道他就在那儿.(这种方法如此奏效,以致于他正认真考虑在自己的办公室挖一条浅沟,这样有人找他的时候就可以躲在浅沟里了.) 回到那些日子,您不会想要一种能自动取消隐藏一切的脚本:这种脚本可能很有用,但却没什么乐趣.但作为系统管理员,您大概并不愿意与文件玩

VBS中常用脚本代码_vbs

将域用户或租添加到本地组 Set objGroup = GetObject("WinNT://./Administrators") Set objUser = GetObject("WinNT://testnet/Engineers") objGroup.Add(objUser.ADsPath) 修改本地管理员密码 Set objcnlar = GetObject("WinNT://./administrator, user") objcnla.

用vbs实现在启动 Windows 资源管理器时打开特定文件夹_vbs

my-script.vbs "c:\scripts" 在文件夹路径的两端必须加双引号吗?本例中不需要.但是,如果路径中有空格,则必须加双引号.以下命令行将不起作用: my-script.vbs c:\documents and settings\kmyer 只要是向脚本传递包含空格的参数,就必须将整个参数括在双引号内(否则无需如此).换句话说: my-script.vbs "c:\documents and settings\kmyer" 这就是命令解释程序的工作方

asp.net遍历文件夹所有文件并列出代码

asp教程.net遍历文件夹所有文件并列出代码 下面的代码是一款c# asp.net教程的文件夹里面的所有文件列出来哦,并且显示了文件创建时间,文件名哦. directoryinfo di;   fileinfo[] filelist;   datagridview dgvlist;   datatable dtable = new datatable();   dtable.columns.add("filename");   dtable.columns.add("cre

vbs 列出该目录下所有文件和文件夹的类型,大小,和所有者_vbs

GetOwner.VBS用法,在命令行下:GetOwner.vbs 目录名会在相应目录下生成一个TXT.TXT文件,内里列出该目录下所有文件和文件夹的类型,大小,和所有者 注意:大小以MB为单位,小于1MB的就显示为0MB, 以下是代码: G = WScript.arguments(0) Set oFSO = CreateObject("Scripting.FileSystemObject") set txt = oFSO.CreateTextFile(G&"TXT.

遍历文件目录和列出空文件夹

问题描述 遍历文件目录和列出空文件夹 你好,我太笨了,用VB试了这个程序,总报错,能方便给一个调好的VB小程序吗?可以显示某个文件夹下的所有空目录名.如果可以,非常感谢,因为急需这样一个文件,我的机器丢了一些文件多谢 解决方案 看代码http://blog.csdn.net/donkey2004112103/article/details/2941140 解决方案二: VB额, 感觉好老了 C里面有readdir

同文件夹内文本搜索器(vbs)

<HTML><HEAD><TITLE>同文件夹内文本搜索器(vbs)</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <SCRIPT language=vbscript id=clientEventHandlersVBS> <!-- Dim fso, f, f1, fc,fn,s,uf1,ufn Sub B1

窗体中字段顺序不同于Access 2007中记录源中字段顺序

症状 Microsoft Office Access 2007, 中拖动字段到窗体, 时窗体中字段顺序不同于记录源中字段顺序. 如果下列条件为真会发生此问题: • 在拖动字段来自记录源中的表. • 您将字段拖动到版式视图中窗体. 原因 出现此问题的是因为中表记录源中字段显示顺序与中访问 2007 返回字段顺序无关. 更多信息 步骤来重现问题 1. 在 Access 2007年打开数据库. 2. 关闭所有打开对象. 3. 在 创建 选项卡, Forms 组中单击 空白表单 . 窗体版式视图中打开.