allfiles.vbs 显示子目录下的所有文件的修改时间、大小、文件名、扩展名等

米米素材网

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

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

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

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

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

全部代码如下——

' allfiles.vbs: 显示子目录下的所有文件的修改时间、大小、全限定名等信息。输出文件版.
' Author: zyl910
' Blog: http://www.cnblogs.com/zyl910
' URL: http://www.cnblogs.com/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”。然后将其复制到欲导出的目录,双击运行,该脚本便会将子目录下的所有文件信息导出到“allfiles.txt”中。因为该文本文件是以Tab分隔各列的,能很方便的复制到Excel中。

例如该脚本对VC2005的include目录的输出结果为——

Type    DateLastModified    Size    Base    Ext    FullName
D    2011-9-5 13:16:14        CodeAnalysis        C:\VS8_2005\VC\include\CodeAnalysis\
F    2006-12-1 22:16:08    5720    sourceannotations    h    C:\VS8_2005\VC\include\CodeAnalysis\sourceannotations.h
F    2005-11-11 22:52:36    866    Warnings    h    C:\VS8_2005\VC\include\CodeAnalysis\Warnings.h
D    2011-9-5 13:16:07        msclr        C:\VS8_2005\VC\include\msclr\
D    2011-9-5 13:16:07        com        C:\VS8_2005\VC\include\msclr\com\
F    2006-12-1 22:54:28    8078    ptr    h    C:\VS8_2005\VC\include\msclr\com\ptr.h
F    2005-11-11 22:52:36    585    all    h    C:\VS8_2005\VC\include\msclr\all.h
F    2006-12-1 22:54:28    125137    appdomain    h    C:\VS8_2005\VC\include\msclr\appdomain.h
F    2005-11-11 22:52:36    6155    auto_gcroot    h    C:\VS8_2005\VC\include\msclr\auto_gcroot.h
F    2005-11-11 22:52:36    4098    auto_handle    h    C:\VS8_2005\VC\include\msclr\auto_handle.h
F    2005-11-11 22:52:36    2504    event    h    C:\VS8_2005\VC\include\msclr\event.h
F    2005-11-11 22:52:36    3958    gcroot    h    C:\VS8_2005\VC\include\msclr\gcroot.h
F    2005-11-11 22:52:36    8012    lock    h    C:\VS8_2005\VC\include\msclr\lock.h
F    2005-11-11 22:52:36    1257    safebool    h    C:\VS8_2005\VC\include\msclr\safebool.h
D    2011-9-5 11:55:28        sys        C:\VS8_2005\VC\include\sys\
F    2005-11-11 22:52:36    997    locking    h    C:\VS8_2005\VC\include\sys\locking.h
F    2005-11-11 22:52:36    6969    stat    h    C:\VS8_2005\VC\include\sys\stat.h
F    2005-11-11 22:52:36    1856    stat    inl    C:\VS8_2005\VC\include\sys\stat.inl
F    2005-11-11 22:52:36    3340    timeb    h    C:\VS8_2005\VC\include\sys\timeb.h
F    2005-11-11 22:52:36    1414    timeb    inl    C:\VS8_2005\VC\include\sys\timeb.inl
F    2005-11-11 22:52:38    2150    types    h    C:\VS8_2005\VC\include\sys\types.h
F    2005-11-11 22:52:38    4006    utime    h    C:\VS8_2005\VC\include\sys\utime.h
F    2005-11-11 22:52:38    2881    utime    inl    C:\VS8_2005\VC\include\sys\utime.inl
F    2005-11-11 22:52:38    1959    wstat    inl    C:\VS8_2005\VC\include\sys\wstat.inl
F    2006-12-1 22:54:24    191593    algorithm        C:\VS8_2005\VC\include\algorithm
F    2013-1-7 21:25:47    0    allfiles    txt    C:\VS8_2005\VC\include\allfiles.txt
F    2013-1-7 21:25:11    2730    allfiles    vbs    C:\VS8_2005\VC\include\allfiles.vbs
F    2005-11-11 22:52:24    689    assert    h    C:\VS8_2005\VC\include\assert.h
F    2005-11-11 22:52:24    13925    bitset        C:\VS8_2005\VC\include\bitset
F    2005-11-11 22:52:24    223    cassert        C:\VS8_2005\VC\include\cassert
F    2005-11-11 22:52:24    1050    cctype        C:\VS8_2005\VC\include\cctype
F    2005-11-11 22:52:24    694    cerrno        C:\VS8_2005\VC\include\cerrno
F    2005-11-11 22:52:24    296    cfloat        C:\VS8_2005\VC\include\cfloat
F    2005-11-11 22:52:24    301    ciso646        C:\VS8_2005\VC\include\ciso646
F    2005-11-11 22:52:24    336    climits        C:\VS8_2005\VC\include\climits
F    2005-11-11 22:52:24    698    clocale        C:\VS8_2005\VC\include\clocale
F    2005-11-11 22:52:24    1553    cmath        C:\VS8_2005\VC\include\cmath
F    2006-12-1 23:07:20    8949    comdef    h    C:\VS8_2005\VC\include\comdef.h
F    2005-11-11 22:52:24    79172    comdefsp    h    C:\VS8_2005\VC\include\comdefsp.h
F    2005-11-11 22:52:24    27097    comip    h    C:\VS8_2005\VC\include\comip.h
F    2005-11-11 22:52:24    28821    complex        C:\VS8_2005\VC\include\complex
F    2005-11-11 22:52:24    58427    comutil    h    C:\VS8_2005\VC\include\comutil.h
F    2005-11-11 22:52:24    8895    conio    h    C:\VS8_2005\VC\include\conio.h
F    2006-12-1 22:54:26    646    crtassem    h    C:\VS8_2005\VC\include\crtassem.h
F    2006-12-1 22:54:26    38386    crtdbg    h    C:\VS8_2005\VC\include\crtdbg.h
F    2006-12-1 22:54:26    93735    crtdefs    h    C:\VS8_2005\VC\include\crtdefs.h
F    2005-11-11 22:52:24    2183    crtwrn    h    C:\VS8_2005\VC\include\crtwrn.h
F    2005-11-11 22:52:24    883    csetjmp        C:\VS8_2005\VC\include\csetjmp
F    2005-11-11 22:52:24    610    csignal        C:\VS8_2005\VC\include\csignal
F    2005-11-11 22:52:24    574    cstdarg        C:\VS8_2005\VC\include\cstdarg
F    2005-11-11 22:52:24    592    cstddef        C:\VS8_2005\VC\include\cstddef
F    2005-11-11 22:52:24    1514    cstdio        C:\VS8_2005\VC\include\cstdio
F    2005-11-11 22:52:24    1045    cstdlib        C:\VS8_2005\VC\include\cstdlib
F    2005-11-11 22:52:26    947    cstring        C:\VS8_2005\VC\include\cstring
F    2005-11-11 22:52:26    758    ctime        C:\VS8_2005\VC\include\ctime
F    2005-11-11 22:52:26    19257    ctype    h    C:\VS8_2005\VC\include\ctype.h
F    2005-11-11 22:52:26    1621    cwchar        C:\VS8_2005\VC\include\cwchar
F    2005-11-11 22:52:26    1266    cwctype        C:\VS8_2005\VC\include\cwctype
F    2005-11-11 22:21:32    5125    dbgautoattach    h    C:\VS8_2005\VC\include\dbgautoattach.h
F    2005-11-11 22:52:26    15385    delayhlp    cpp    C:\VS8_2005\VC\include\delayhlp.cpp
F    2005-11-11 22:52:26    4350    delayimp    h    C:\VS8_2005\VC\include\delayimp.h
F    2005-11-11 22:52:26    38621    deque        C:\VS8_2005\VC\include\deque
F    2005-11-11 22:52:26    4463    direct    h    C:\VS8_2005\VC\include\direct.h
F    2005-11-11 22:52:26    2027    dos    h    C:\VS8_2005\VC\include\dos.h
F    2006-12-1 22:54:26    43278    dvec    h    C:\VS8_2005\VC\include\dvec.h
F    2005-11-11 22:52:26    2997    eh    h    C:\VS8_2005\VC\include\eh.h
F    2005-11-11 22:52:26    14047    emmintrin    h    C:\VS8_2005\VC\include\emmintrin.h
F    2005-11-11 22:52:26    2279    errno    h    C:\VS8_2005\VC\include\errno.h
F    2006-12-1 22:54:26    10407    exception        C:\VS8_2005\VC\include\exception
F    2005-11-11 22:52:26    3036    excpt    h    C:\VS8_2005\VC\include\excpt.h
F    2005-11-11 22:52:26    2646    fcntl    h    C:\VS8_2005\VC\include\fcntl.h
F    2005-11-11 22:52:26    13096    float    h    C:\VS8_2005\VC\include\float.h
F    2005-11-11 22:52:26    7619    fpieee    h    C:\VS8_2005\VC\include\fpieee.h
F    2005-11-11 22:52:26    30192    fstream        C:\VS8_2005\VC\include\fstream
F    2005-11-11 22:52:26    20758    functional        C:\VS8_2005\VC\include\functional
F    2006-12-1 22:54:26    16955    fvec    h    C:\VS8_2005\VC\include\fvec.h
F    2005-11-11 22:52:26    1396    gcroot    h    C:\VS8_2005\VC\include\gcroot.h
F    2005-11-11 22:52:26    9631    hash_map        C:\VS8_2005\VC\include\hash_map
F    2005-11-11 22:52:26    8349    hash_set        C:\VS8_2005\VC\include\hash_set
F    2006-12-1 22:54:26    80350    intrin    h    C:\VS8_2005\VC\include\intrin.h
F    2005-11-11 22:52:28    1586    invkprxy    h    C:\VS8_2005\VC\include\invkprxy.h
F    2005-11-11 22:52:28    16413    io    h    C:\VS8_2005\VC\include\io.h
F    2005-11-11 22:52:28    2909    iomanip        C:\VS8_2005\VC\include\iomanip
F    2005-11-11 22:52:28    8146    ios        C:\VS8_2005\VC\include\ios
F    2005-11-11 22:52:28    23755    iosfwd        C:\VS8_2005\VC\include\iosfwd
F    2005-11-11 22:52:28    2101    iostream        C:\VS8_2005\VC\include\iostream
F    2005-11-11 22:52:28    561    iso646    h    C:\VS8_2005\VC\include\iso646.h
F    2006-12-1 22:54:28    32646    istream        C:\VS8_2005\VC\include\istream
F    2006-12-1 22:54:28    14517    iterator        C:\VS8_2005\VC\include\iterator
F    2005-11-11 22:52:28    33146    ivec    h    C:\VS8_2005\VC\include\ivec.h
F    2005-11-11 22:52:28    29325    limits        C:\VS8_2005\VC\include\limits
F    2005-11-11 22:52:28    4678    limits    h    C:\VS8_2005\VC\include\limits.h
F    2006-12-1 22:54:28    35936    list        C:\VS8_2005\VC\include\list
F    2005-11-12 0:20:20    2425    listing    inc    C:\VS8_2005\VC\include\listing.inc
F    2005-11-11 22:52:28    8068    locale        C:\VS8_2005\VC\include\locale
F    2005-11-11 22:52:28    3714    locale    h    C:\VS8_2005\VC\include\locale.h
F    2006-12-1 22:54:28    10463    malloc    h    C:\VS8_2005\VC\include\malloc.h
F    2005-11-11 22:52:28    10022    map        C:\VS8_2005\VC\include\map
F    2006-12-1 22:54:28    23670    math    h    C:\VS8_2005\VC\include\math.h
F    2005-11-11 22:52:28    5666    mbctype    h    C:\VS8_2005\VC\include\mbctype.h
F    2006-12-1 22:54:28    31431    mbstring    h    C:\VS8_2005\VC\include\mbstring.h
F    2006-12-1 22:54:28    29695    memory        C:\VS8_2005\VC\include\memory
F    2005-11-11 22:52:30    2888    memory    h    C:\VS8_2005\VC\include\memory.h
F    2005-11-11 22:52:30    456    minmax    h    C:\VS8_2005\VC\include\minmax.h
F    2005-11-11 22:52:30    1663    mm3dnow    h    C:\VS8_2005\VC\include\mm3dnow.h
F    2005-11-11 22:52:30    6413    mmintrin    h    C:\VS8_2005\VC\include\mmintrin.h
F    2005-11-11 22:52:30    3276    new        C:\VS8_2005\VC\include\new
F    2005-11-11 22:52:30    3812    new    h    C:\VS8_2005\VC\include\new.h
F    2006-12-1 22:54:28    27362    numeric        C:\VS8_2005\VC\include\numeric
F    2005-11-11 22:52:30    5310    omp    h    C:\VS8_2005\VC\include\omp.h
F    2006-12-1 22:54:28    29058    ostream        C:\VS8_2005\VC\include\ostream
F    2005-9-27 20:49:22    110287    penwin    h    C:\VS8_2005\VC\include\penwin.h
F    2005-11-11 22:52:30    527    pgobootrun    h    C:\VS8_2005\VC\include\pgobootrun.h
F    2005-11-11 22:52:30    12546    process    h    C:\VS8_2005\VC\include\process.h
F    2005-11-11 22:52:30    6374    queue        C:\VS8_2005\VC\include\queue
F    2005-11-11 22:52:30    5418    rtcapi    h    C:\VS8_2005\VC\include\rtcapi.h
F    2005-11-11 22:52:30    45876    sal    h    C:\VS8_2005\VC\include\sal.h
F    2005-11-11 22:52:30    6283    search    h    C:\VS8_2005\VC\include\search.h
F    2005-11-11 22:52:30    8945    set        C:\VS8_2005\VC\include\set
F    2005-11-11 22:52:30    6208    setjmp    h    C:\VS8_2005\VC\include\setjmp.h
F    2005-11-11 22:52:30    849    setjmpex    h    C:\VS8_2005\VC\include\setjmpex.h
F    2005-11-11 22:52:30    899    share    h    C:\VS8_2005\VC\include\share.h
F    2005-11-11 22:52:30    3251    signal    h    C:\VS8_2005\VC\include\signal.h
F    2005-11-12 0:20:26    14733    srv    h    C:\VS8_2005\VC\include\srv.h
F    2005-11-11 22:52:30    16632    sstream        C:\VS8_2005\VC\include\sstream
F    2005-11-11 22:52:30    3687    stack        C:\VS8_2005\VC\include\stack
F    2005-11-11 22:52:30    659    stdarg    h    C:\VS8_2005\VC\include\stdarg.h
F    2005-11-11 22:52:32    1607    stddef    h    C:\VS8_2005\VC\include\stddef.h
F    2005-11-11 22:52:32    6475    stdexcept        C:\VS8_2005\VC\include\stdexcept
F    2005-11-11 22:52:32    555    stdexcpt    h    C:\VS8_2005\VC\include\stdexcpt.h
F    2006-12-1 22:54:28    46583    stdio    h    C:\VS8_2005\VC\include\stdio.h
F    2006-12-1 22:54:28    47898    stdlib    h    C:\VS8_2005\VC\include\stdlib.h
F    2005-11-11 22:52:32    11931    streambuf        C:\VS8_2005\VC\include\streambuf
F    2005-11-11 22:52:32    21939    string        C:\VS8_2005\VC\include\string
F    2006-12-1 22:54:28    26938    string    h    C:\VS8_2005\VC\include\string.h
F    2005-11-11 22:52:32    17940    strstream        C:\VS8_2005\VC\include\strstream
F    2005-11-11 22:52:32    3825    swprintf    inl    C:\VS8_2005\VC\include\swprintf.inl
F    2006-12-1 22:54:28    99143    tchar    h    C:\VS8_2005\VC\include\tchar.h
F    2005-11-11 22:52:32    11837    time    h    C:\VS8_2005\VC\include\time.h
F    2005-11-11 22:52:32    3730    time    inl    C:\VS8_2005\VC\include\time.inl
F    2005-11-11 22:52:32    5157    typeinfo        C:\VS8_2005\VC\include\typeinfo
F    2005-11-11 22:52:32    999    typeinfo    h    C:\VS8_2005\VC\include\typeinfo.h
F    2005-11-11 22:52:32    3982    use_ansi    h    C:\VS8_2005\VC\include\use_ansi.h
F    2005-11-11 22:52:32    4719    utility        C:\VS8_2005\VC\include\utility
F    2005-11-11 22:52:32    4032    vadefs    h    C:\VS8_2005\VC\include\vadefs.h
F    2005-11-11 22:52:32    42003    valarray        C:\VS8_2005\VC\include\valarray
F    2005-11-11 22:52:32    3730    varargs    h    C:\VS8_2005\VC\include\varargs.h
F    2005-11-11 22:52:32    1405    vcclr    h    C:\VS8_2005\VC\include\vcclr.h
F    2005-11-11 22:52:32    62008    vector        C:\VS8_2005\VC\include\vector
F    2006-12-1 22:54:28    74974    wchar    h    C:\VS8_2005\VC\include\wchar.h
F    2005-11-11 22:52:34    6705    wctype    h    C:\VS8_2005\VC\include\wctype.h
F    2005-11-11 23:44:36    29082    wmiatlprov    h    C:\VS8_2005\VC\include\wmiatlprov.h
F    2005-11-11 22:52:34    1381    wtime    inl    C:\VS8_2005\VC\include\wtime.inl
F    2005-11-11 22:52:34    27165    xcomplex        C:\VS8_2005\VC\include\xcomplex
F    2005-11-11 22:52:34    4717    xdebug        C:\VS8_2005\VC\include\xdebug
F    2006-12-1 22:54:28    21142    xhash        C:\VS8_2005\VC\include\xhash
F    2005-11-11 22:52:34    19697    xiosbase        C:\VS8_2005\VC\include\xiosbase
F    2005-11-11 22:52:34    77261    xlocale        C:\VS8_2005\VC\include\xlocale
F    2005-11-11 22:52:34    7701    xlocinfo        C:\VS8_2005\VC\include\xlocinfo
F    2005-11-11 22:52:34    4614    xlocinfo    h    C:\VS8_2005\VC\include\xlocinfo.h
F    2005-11-11 22:52:34    3841    xlocmes        C:\VS8_2005\VC\include\xlocmes
F    2005-11-11 22:52:34    27813    xlocmon        C:\VS8_2005\VC\include\xlocmon
F    2006-12-1 22:54:28    44597    xlocnum        C:\VS8_2005\VC\include\xlocnum
F    2005-11-11 22:52:34    21103    xloctime        C:\VS8_2005\VC\include\xloctime
F    2005-11-11 22:52:34    4360    xmath    h    C:\VS8_2005\VC\include\xmath.h
F    2005-11-11 22:52:34    7218    xmemory        C:\VS8_2005\VC\include\xmemory
F    2005-11-11 22:52:34    18149    xmmintrin    h    C:\VS8_2005\VC\include\xmmintrin.h
F    2005-11-11 22:52:34    2311    xstddef        C:\VS8_2005\VC\include\xstddef
F    2006-12-1 22:54:28    66005    xstring        C:\VS8_2005\VC\include\xstring
F    2005-11-11 22:52:34    41252    xtree        C:\VS8_2005\VC\include\xtree
F    2006-12-1 22:54:28    123607    xutility        C:\VS8_2005\VC\include\xutility
F    2005-11-11 22:52:36    2364    ymath    h    C:\VS8_2005\VC\include\ymath.h
F    2006-12-1 22:54:28    21162    yvals    h    C:\VS8_2005\VC\include\yvals.h
F    2005-11-11 22:52:22    8816    _vcclrit    h    C:\VS8_2005\VC\include\_vcclrit.h

到此这篇关于allfiles.vbs 显示子目录下的所有文件的修改时间、大小、文件名、扩展名等的文章就介绍到这了,更多相关显示文件的修改时间、大小、文件名等内容请搜索米米素材网以前的文章或继续浏览下面的相关文章希望大家以后多多支持米米素材网!