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

时间:2021-05-22

问:
您好,脚本专家!如何运行脚本取消隐藏文件夹中的所有文件?
--GA
答:
您好,GA。您知道我们中的一位脚本专家在年少时和邻居家的其他小孩花费无数的时间玩各种捉迷藏。事实上,这位脚本专家仍清晰地记得躺在浅沟中,让其他组的人从他身上走过,却不知道他就在那儿。(这种方法如此奏效,以致于他正认真考虑在自己的办公室挖一条浅沟,这样有人找他的时候就可以躲在浅沟里了。)
回到那些日子,您不会想要一种能自动取消隐藏一切的脚本;这种脚本可能很有用,但却没什么乐趣。但作为系统管理员,您大概并不愿意与文件玩捉迷藏。您或许乐意接受能自动取消隐藏文件夹中所有文件的脚本,也就是类似如下的脚本:
复制代码 代码如下:
strComputer="."
SetobjWMIService=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")
SetFileList=objWMIService.ExecQuery_
("ASSOCIATORSOF{Win32_Directory.Name='c:\Scripts'}Where"_
&"ResultClass=CIM_DataFile")
SetobjFSO=CreateObject("Scripting.FileSystemObject")
ForEachobjFileInFileList
SetobjFile=objFSO.GetFile(objFile.Name)
IfobjFile.AttributesAND2Then
objFile.Attributes=objFile.AttributesXOR2
EndIf
Next
此脚本有些不同寻常,因为我们同时使用了WMI和FileSystemObject。(当然,这听起来很危险,其实不然:毕竟,我们是经过专门训练的专业人员。)首先连接到本地计算机的WMI服务(我们马上就会谈到这一点),然后使用以下查询检索C:\Scripts文件夹下所有文件的集合(也就是CIM_DataFile类的所有实例):
SetFileList=objWMIService.ExecQuery_
("ASSOCIATORSOF{Win32_Directory.Name='c:\Scripts'}Where"_
&"ResultClass=CIM_DataFile")
我们使用WMI检索文件的集合,因为使用它十分快捷,并且在多数情况下可以使用同一脚本向外从远程计算机检索文件的集合。然而遗憾的是,WMI无法用于取消隐藏文件;CIM_DataFile类确实包括一个名为Hidden的属性,但它是只读属性。这就是我们必须同时使用WMI和FileSystemObject的原因:我们使用WMI获取文件的集合,然后使用FileSystemObject取消隐藏这些文件。
令人沮丧的是,这也意味着此脚本必须在本地计算机上运行;因为与WMI不同,FileSystemObject无法远程工作。真是差劲。
不管怎样,获得文件集合后,我们创建一个FileSystemObject实例然后建立一个ForEach循环以遍历此组文件。在ForEach循环内,使用下行代码绑定到每个文件:
SetobjFile=objFSO.GetFile(objFile.Name)
正如您所见,我们只是调用了GetFile方法,为其传递Name属性的值(使用WMI获得)。Name属性相当于文件路径;因此文件“名”至少在WMI中类似于C:\Scripts\My_file.txt。
绑定到给定文件后,检查文件是否隐藏;隐藏或未隐藏正好是文件属性的一部分。使用下行代码检查是否打开了隐藏属性的“开关”。如果开关打开、文件隐藏,则此语句为True。如果开关关闭、文件未隐藏,此语句为False:
IfobjFile.AttributesAND2Then
注意。文件属性是作为bitmask属性存储的。在本专栏中,我们不详细说明bitmask属性的详细内容,但您可以在MicrosoftWindows2000脚本指南中找到bitmask的详细解释和使用方法。
为什么要关心文件是否已隐藏?取消对隐藏文件的隐藏最简单的方法是将开关由开转为关,事实上,下行代码就起到这一作用:
objFile.Attributes=objFile.AttributesXOR2
但是,XOR运算符并非特别聪明:它只是将开关由一种状态转为另一状态。如果开关为开,就将其关闭;如果开关为关,就将其打开。这就是我们检查文件当前状态的原因。如果文件被隐藏,则要使用XOR将开关由打开转为关闭。但是,如果文件未被隐藏,应该怎么办呢?这种情况下,不需要转换开关;这样做会隐藏文件。(因为XOR会将开关由关转为开。)因此在开始转换开关前,应检查每个文件的值。
运行此脚本–找到你们了,都出来吧!–之前隐藏的所有文件都会重新出现。然后轮到您藏起来,看看这些文件能否找到您。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章