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 显示子目录下的所有文件的修改时间、大小、文件名、扩展名等的文章就介绍到这了,更多相关显示文件的修改时间、大小、文件名等内容请搜索lingkb以前的文章或继续浏览下面的相关文章希望大家以后多多支持lingkb!