allfiles.vbs如何实现显示文件的详情信息-创新互联
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: /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://www.jxjierui.cn/article/disded.html


咨询
建站咨询
