原因:目录中大概有3000个文件,目录中仅有几个文件需要保存,其它文件都需要被删除。
想法:1、拷贝有用的文件到别处->删除原有目录->建立原有目录->移动移出的文件到原有目录。
   如果环节中有断电发生,将导致文件丢失。不安全
      2、修改有用文件的属性(设为hide)->删除原有目录下属性不为hide的文件->恢复目录下属性为hide的文件。
   因为第二种方法较为安全,所以想采取,但不知道操作。希望得到帮助。

解决方案 »

  1.   

    使用GetAttr()这个函数可以取得文件属性,之后判断一下是否带有隐藏属性,有则删之之外你还需要能遍历目录下所有文件及子文件夹的功能~这里能搜索到的~
      

  2.   

    返回一个 Integer,此为一个文件、目录、或文件夹的属性。语法GetAttr(pathname)必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。返回值由 GetAttr 返回的值,是下面这些属性值的总和:常数 值 描述 
    vbNormal 0 常规 
    vbReadOnly 1 只读 
    vbHidden 2 隐藏 
    vbSystem 4 系统文件 
    vbDirectory 16 目录或文件夹 
    vbArchive 32 上次备份以后,文件已经改变 
    vbalias 64 指定的文件名是别名。 
    注意 这些常数是由 VBA 指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的值。说明若要判断是否设置了某个属性,在 GetAttr 函数与想要得知的属性值之间使用 And 运算符与逐位比较。如果所得的结果不为零,则表示设置了这个属性值。例如,在下面的 And 表达式中,如果档案 (Archive) 属性没有设置,则返回值为零:Result = GetAttr(FName) And vbArchive如果文件的档案属性已设置,则返回非零的数值。
    =============================================
    这个东西可能对你有帮助:)
      

  3.   

    Option Explicit
    '定义一个路径常数
    Const strPathName = "d:\test\"
    Private Sub Command1_Click()
        Dim strFileName As String
        
        strFileName = Dir(strPathName & "*.*", vbHidden)
        Do While strFileName <> ""
            DoEvents
            If GetAttr(strPathName & strFileName) And vbHidden Then
                Debug.Print strFileName
                'kill不能删除隐藏文件,所以要恢复文件的属性
                SetAttr strPathName & strFileName, vbNormal
                Kill strPathName & strFileName
            End If
            strFileName = Dir
        Loop
    End Sub