问:
你好,脚本专家!如何按创建日期的顺序列出一个文件夹中的所有文件?
-- 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 为我们处理所有问题。它真是太棒了,不是吗?
诚然,我们不必费很大力气就可以获得这些结果。而且它既快捷又简便。您可以这么来看:任何人都不必知道我们不努力工作,不是吗?
你好,脚本专家!如何按创建日期的顺序列出一个文件夹中的所有文件?
-- 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 为我们处理所有问题。它真是太棒了,不是吗?
诚然,我们不必费很大力气就可以获得这些结果。而且它既快捷又简便。您可以这么来看:任何人都不必知道我们不努力工作,不是吗?
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月20日
2024年11月20日
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 天籁女声《2024第31届上海国际高端音影展纪念CD》[WAV+CUE][1.1G]
- 姚斯婷 《敢爱敢做》头版限量编号24K金碟[低速原抓WAV+CUE][1.2G]
- 雷婷 《把爱留在昨天》紫银合金AQCD[低速原抓WAV+CUE][1.1G]
- 董文华2024-《精选30年·长城长HQ》头版限量[WAV+CUE]
- 柏菲·魏松2024-《跟你走》限量开盘母带ORMCD[WAV+CUE]
- 柏菲·甘雅丹《雅鲁藏布》限量开盘母带ORMCD[WAV+CUE]
- 孙露《明天你是否依然爱我》1:1母盘直刻[低速原抓WAV+CUE][1G]
- 群星2024《龙年精选.音乐盛宴》纯银CD[WAV+CUE][1.1G]
- 童丽《君再来VI》妙音首版[WAV+CUE][1G]
- 柏菲·李跃君2024-《寂寞公路》限量开盘母带ORMCD[WAV+CUE]
- 柏菲·古璇2024-《东山飘雨西山晴》限量开盘母带ORMCD[WAV+CUE]
- 群星《2024好听新歌38》AI调整音效【WAV分轨】
- 台湾荷东《周末狂热1》[WAV+CUE][1.1G]
- 群星《Hi.Fi.怀旧金曲.Vol.1》[低速原抓WAV+分轨][996M]