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

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

复制代码 代码如下:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set FileList = objWMIService.ExecQuery _ 
    ("ASSOCIATORS OF {Win32_Directory.Name='c:\Scripts'} Where " _ 
        & "ResultClass = CIM_DataFile") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
For Each objFile In FileList 
    Set objFile = objFSO.GetFile(objFile.Name) 
    If objFile.Attributes AND 2 Then 
        objFile.Attributes = objFile.Attributes XOR 2  
    End If 
Next 

此脚本有些不同寻常,因为我们同时使用了 WMI 和 FileSystemObject。(当然,这听起来很危险,其实不然:毕竟,我们是经过专门训练的专业人员。)首先连接到本地计算机的 WMI 服务(我们马上就会谈到这一点),然后使用以下查询检索 C:\Scripts 文件夹下所有文件的集合(也就是 CIM_DataFile 类的所有实例):
Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='c:\Scripts'} Where " _
        & "ResultClass = CIM_DataFile")
我们使用 WMI 检索文件的集合,因为使用它十分快捷,并且在多数情况下可以使用同一脚本向外从远程计算机检索文件的集合。然而遗憾的是,WMI 无法用于取消隐藏文件;CIM_DataFile 类确实包括一个名为 Hidden 的属性,但它是只读属性。这就是我们必须同时使用 WMI 和 FileSystemObject 的原因:我们使用 WMI 获取文件的集合,然后使用 FileSystemObject 取消隐藏这些文件。
令人沮丧的是,这也意味着此脚本必须在本地计算机上运行;因为与 WMI 不同,FileSystemObject 无法远程工作。真是差劲。
不管怎样,获得文件集合后,我们创建一个 FileSystemObject 实例然后建立一个 For Each 循环以遍历此组文件。在 For Each 循环内,使用下行代码绑定到每个文件:
Set objFile = objFSO.GetFile(objFile.Name)
正如您所见,我们只是调用了 GetFile 方法,为其传递 Name 属性的值(使用 WMI 获得)。Name 属性相当于文件路径;因此文件“名”至少在 WMI 中类似于 C:\Scripts\My_file.txt。
绑定到给定文件后,检查文件是否隐藏;隐藏或未隐藏正好是文件属性的一部分。使用下行代码检查是否打开了隐藏属性的“开关”。如果开关打开、文件隐藏,则此语句为 True。如果开关关闭、文件未隐藏,此语句为 False:
If objFile.Attributes AND 2 Then
注意。文件属性是作为 bitmask 属性存储的。在本专栏中,我们不详细说明 bitmask 属性的详细内容,但您可以在 Microsoft Windows 2000 脚本指南 中找到 bitmask 的详细解释和使用方法。
为什么要关心文件是否已隐藏?取消对隐藏文件的隐藏最简单的方法是将开关由开转为关,事实上,下行代码就起到这一作用:
objFile.Attributes = objFile.Attributes XOR 2
但是,XOR 运算符并非特别聪明:它只是将开关由一种状态转为另一状态。如果开关为开,就将其关闭;如果开关为关,就将其打开。这就是我们检查文件当前状态的原因。如果文件被隐藏,则要使用 XOR 将开关由打开转为关闭。但是,如果文件未被隐藏,应该怎么办呢?这种情况下,不需要转换开关;这样做会隐藏文件。(因为 XOR 会将开关由关转为开。)因此在开始转换开关前,应检查每个文件的值。
运行此脚本 – 找到你们了,都出来吧!– 之前隐藏的所有文件都会重新出现。然后轮到您藏起来,看看这些文件能否找到您。

时间: 2024-09-20 00:11:24

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

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

问: 你好,脚本专家!如何按创建日期的顺序列出一个文件夹中的所有文件? -- CL 答: 你好,CL.您知道,如果我们雄心勃勃并且努力工作,我们会坐下来为您写一个脚本,以使用 WMI 返回一个文件夹中的所有文件.该脚本将获取有关所有这些文件的信息,并将该数据存储在未连接的记录集中.然后,在该记录集中设置排序顺序以按创建日期和时间对文件进行排列.(接着,我们进行大量的重复性工作,以将 WMI 的日期时间值转换为易读的日期时间格式.)最后,我们将记录集中的所有值回显到屏幕上.它需要花费大量时间并编写

Append打开指定文件夹中的数据文件就象这些文件在当前文件夹中一样_DOS/BAT

允许程序打开指定文件夹中的数据文件就象这些文件在当前文件夹中一样.如果在没有参数的情况下使用,则 append 命令显示附加的目录列表. 语法 append [;] [[Drive:]Path[;...]][/x:{on|off}][/path:{on|off}] [/e] 参数 取消附加文件夹列表. [Drive:}Path 指定要附加到当前文件夹的驱动器和文件夹.如果未指定驱动器,将默认使用当前驱动器.可以指定 [Drive:]Path 的多个项,各项之间要用分号隔开. /x:{on | o

uri-Android中如何读入文件夹中的图片文件并得到该图片的名称

问题描述 Android中如何读入文件夹中的图片文件并得到该图片的名称 补充内容,我按照下面的方式读取了一张图片,能不能得到这个图片的名字?比如图片的名字为"XD0001.jpg",如何得到"XD0001"这个字符串? 我现在有一个程序,是从相册选择一张图片后裁剪,保存然后才能进入后面的处理,我现在想把裁剪功能去掉,并想实现读取文件夹中的所有图片,并能一张张的进行处理,我该怎么改? 现在的代码是: 这个是onActivityResult需要改的部分代码 protec

遍历-如何读取一个大文件夹中全部xml文件。将其路径放入哪种容器

问题描述 如何读取一个大文件夹中全部xml文件.将其路径放入哪种容器 现在在一个大的文件夹中,包含了若干个子文件夹,每个文件夹可能包含N个xml,txt等其他文件.现在想通过遍历把这个大的文件夹中所有的xml文件保存到一个容器中.1.请问用什么容器比较好vector?2.最好能来个详细的例子 让鄙人学习下 解决方案 你这种方法用递归比较好,至于容器,你说的是将找到的文件的路径存放起来吧.那个就随便都可以.用List吧. public void findFileByEndStr(String di

c#-读取文件夹中的所有图片文件

问题描述 读取文件夹中的所有图片文件 我第一次读取的时候没有问题.在删除图片后再读取图片会读取错误,以下是我的代码各位帮忙看一下. 后台代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Data; publ

求助啊 如何用process定位并打开VB.EXE所在文件夹中的.exe文件,该文件的位置在不同电脑上是不固定的

问题描述 求助啊如何用process定位并打开VB.EXE所在文件夹中的.exe文件,该文件的位置在不同电脑上是不固定的 解决方案 解决方案二:你可以做个窗口,让用户选择路径,然后把路径保存到文件.这是最简单的办法.复杂一点,你就遍历磁盘,找到VB所在的文件夹,然后写入文件.下次打开,发现文件里有路径,就不再遍历了.解决方案三:谢谢谢谢能不能直接定位该程序位置比如以下语句:DimFilePathAsNewSystem.IO.StreamWriter(AppDomain.CurrentDomain

Windows 7系统如何隐藏或取消隐藏文件夹

  1,设置是否显示隐藏文件和文件夹,左键打开"我的电脑",单击"组织"然后单击"文件夹和搜索选项"(如下图): 2,打开我们可以看到关于是否显示隐藏文件和文件夹的选项(如下图): 举例说明: 1.例如,我们要隐藏文件夹A.鼠标右键选择文件夹A-属性-常规-选择隐藏,确定即可(如下图): 2.隐藏后,文件夹A消失无法显示(如下图) 3.如果想取消对A文件夹的隐藏,组织-文件夹和搜索选项-文件夹选项-查看-文件夹选项-隐藏文件和文件夹---将不显示

Shell脚本实现从文件夹中递归复制文件_linux shell

需求 前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本. 如下面这样的文件结构: 复制代码 代码如下:     dir1     ├── a     │   ├── b     │   │   └── file1     │   └── file2     ├── c     │   └── d     │       ├── e     │       │   └── file4     │       └── file3     └── file5 我们需要将其中的file1

请问如何复制选择的文件夹中的所有文件到另一文件夹

问题描述 不是已经知道了路径的,是可以自行选择任意路径文件夹的 解决方案 解决方案二:指定路径可以操作的,难道'变路径'的不行?肯定行发个链接吧解决方案三:引用1楼mking0412的回复: http://www.cnblogs.com/xiachufeng/archive/2010/08/07/1794631.html指定路径可以操作的,难道'变路径'的不行?肯定行发个链接吧 呃,我刚接触C#,想要编一个windows窗体程序,就是那种可以任意选择某个文件夹然后将其中的所有文件复制到任意选择的