网站建设资讯

NEWS

网站建设资讯

allfiles.vbs如何实现显示文件的详情信息-创新互联

allfiles.vbs 如何实现显示文件的详情信息?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

我们提供的服务有:网站制作、成都网站建设、微信公众号开发、网站优化、网站认证、临邑ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的临邑网站制作公司

有的时候将子目录下的所有文件的修改时间、大小、全限定名等信息导出到Excel表格中。

尝试过命令行,但不太好用——

1.对于“dir /s >1.txt”,当前目录与文件列表是分开显示的,合并起来太麻烦,而且没有文件的全限定名。
2.对于“dir /b /s >1.txt”,只有全限定名,没有修改时间、大小等详细信息。
3.对于“tree /f >1.txt”,只有目录树,没有修改时间、大小等详细信息。

在网上找了几个导出文件列表的工具,但都不太好用。于是决定自己编写。

用什么编程工具开发呢?考虑到以后可能经常改进输出内容的格式,所以用VBScript脚本来写是最方便的。

全部代码如下——

' allfiles.vbs: 显示子目录下的所有文件的修改时间、大小、全限定名等信息。输出文件版.
' Author: zyl910
' Blog: /tupian/20230522/zyl910
' URL: /tupian/20230522/zyl910/archive/2013/01/07/allfiles.html
' Version: V1.0
' Updata: 2013-01-07
' 
' 输出文件是“allfiles.txt”。格式:
' Type  DateLastModified  Size  Base  Ext  FullName
' D  2013-1-1 12:30:30    Temp    C:\Temp  
' F  2013-1-1 12:30:31  34  abc  txt  C:\Temp\abc.txt
'
' Type: 类型。D目录,F文件。
' DateLastModified: 最后修改时间.
' Size: 文件大小.
' Base: 文件基本名.
' Ext: 扩展名.
' FullName: 文件的全限定名.


' 取得文件扩展名和基本名.
Function GetFileExtAndBaseName(ByVal sfilename, ByRef sbasename)
  n = InStrRev(sfilename, ".")
  If n>1 Then
    GetFileExtAndBaseName = Mid(sfilename, n+1)
    sbasename = Left(sfilename, n-1)
  Else
    GetFileExtAndBaseName = ""
    sbasename = sfilename
  End If
End Function

' 遍历该目录及子目录.
'
' Result: 目录和文件的总数.
' fileOut: 输出文件,用于输出遍历结果.
' fso: FileSystemObject对象.
' sPath: 目录.
Function dirscan(ByRef fileOut, ByVal fso, ByVal sPath)
  rt = 0
  Set currentFolder = Nothing
  'MsgBox sPath
  
  On Error Resume Next
  Set currentFolder = fso.GetFolder(sPath)
  On Error Goto 0
  
  If Not (currentFolder Is Nothing) Then
    ' Folders
    For Each subFolder in currentFolder.SubFolders
      sfull = subFolder.Path & "\"  ' 全限定名.
      s = "D" & vbTab & subFolder.DateLastModified & vbTab & "" & vbTab & subFolder.Name & vbTab & "" & vbTab & sfull & vbCrLf
      fileOut.write s
      rt = rt + 1
      rt = rt + dirscan(fileOut, fso, subFolder.Path)
    Next
    
    ' Files
    For Each f in currentFolder.Files
      sbase = ""
      sext = GetFileExtAndBaseName(f.Name, sbase)  ' 扩展名.
      sfull = f.Path  ' 全限定名.
      s = "F" & vbTab & f.DateLastModified & vbTab & f.Size & vbTab & sbase & vbTab & sext & vbTab & sfull & vbCrLf
      fileOut.write s
      rt = rt + 1
    Next
  End If
  
  dirscan = rt
End Function


'得到脚本文件所在的当前目录
Function GetCurrentFolderFullPath(fso)
  GetCurrentFolderFullPath = fso.GetParentFolderName(WScript.ScriptFullName)
End Function

' 测试
Sub dotest
  Set fso = CreateObject("Scripting.FileSystemObject")
  strpath = GetCurrentFolderFullPath(fso)  ' 得到当前目录.
  Set FileObj = fso.opentextfile(strpath+"\allfiles.txt", 2, True, -1)  ' 打开输出文件. ForWriting, TristateTrue.
  s = "Type" & vbTab & "DateLastModified" & vbTab & "Size" & vbTab & "Base" & vbTab & "Ext" & vbTab & "FullName" & vbCrLf  ' 格式说明.
  FileObj.write s  ' 写入格式说明.
  cnt = dirscan(FileObj, fso, strpath)  ' 遍历目录及子目录.
  FileObj.Close  ' 关闭输出文件.
  MsgBox "OK! " & cnt & " items.", vbOKOnly, "allfiles"
End Sub

' Run
Call dotest()

文章名称:allfiles.vbs如何实现显示文件的详情信息-创新互联
当前地址:http://cdweb.net/article/disded.html