vbsTree VBS脚本模拟tree命令
来源:易贤网 阅读:976 次 日期:2016-06-30 11:21:37
温馨提示:易贤网小编为您整理了“vbsTree VBS脚本模拟tree命令”,方便广大网友查阅!

用vbs输出一个文件夹的目录结构,喜欢的朋友可以测试下

代码如下:

'-------------vbsTree.vbs------------------------

'描述:用vbs输出一个文件夹的目录结构。

'------------------------------------------------

Const Unit4Size = "字节KBMBGB"

Const OutFile = "OutTree.txt"

Dim theApp,SelPath,TreePath,TreeStr

Set theApp = CreateObject("Shell.Application")

Set SelPath = theApp.BrowseForFolder(0,"请选择需要列出子项目的路径",0)

If SelPath Is Nothing Then WScript.Quit

TreePath = SelPath.items.Item.Path

Set SelPathPath = Nothing

Set theApp = Nothing

Dim objFSO

Set objFSO = CreateObject("Scripting.FileSystemObject")

TreeStr = TreePath & FormatSize(objFSO.GetFolder(TreePath).Size) & vbCrLf

Tree TreePath,""

Set objFile = objFSO.CreateTextFile(OutFile,True)

objFile.Write TreeStr

objFile.Close

Set objFile = Nothing

Set objFSO = Nothing

MsgBox "查看当前目录下的OutTree.txt",vbInformation,"完成 - vbsTree"

Sub Tree(Path,SFSpace)

Dim i,TempStr,FlSpace

FlSpace = SFSpace & " "

Set CrntFolder = objFSO.GetFolder(Path)

i = 0:TempStr = "├─"

For Each ConFile In CrntFolder.Files

i = i + 1

If i = CrntFolder.Files.Count And CrntFolder.SubFolders.Count = 0 Then TempStr = "└─"

TreeStr = TreeStr & FlSpace & Tempstr & ConFile.name & FormatSize(ConFile.size) & vbCrLf

Next

i = 0:TempStr = "├─"

For Each SubFolder In CrntFolder.SubFolders

i = i + 1

If i = CrntFolder.SubFolders.Count Then

TempStr = "└─"

SFSpace = FlSpace & " "

Else

SFSpace = FlSpace & "│"

End If

TreeStr = TreeStr & FlSpace & TempStr & SubFolder.name & FormatSize(SubFolder.size) & vbCrLf

Tree SubFolder,(SFSpace)

Next

End Sub

Function FormatSize(SZ)

Dim i

Do While SZ > 1024

i = i + 1

SZ = SZ \ 1024

Loop

FormatSize = " (" & SZ & Mid(Unit4Size,1 + 2 * i,2) & ")"

End Function

文件夹浏览部分优化后的代码

代码如下:

'-------------vbsTree.vbs------------------------

'描述:用vbs输出一个文件夹的目录结构。

'------------------------------------------------

Const Unit4Size = "字节KBMBGB"

Const OutFile = "OutTree.txt"

Dim TreePath,TreeStr,WS

Set WS = WScript.CreateObject("WScript.Shell")

TreePath = BFF("请选择需要列出子项目的路径",&H0001 + &H0008 + &H0010,"")

Set WS = Nothing

If Len(TreePath) = 0 Then WScript.Quit

If Len(TreePath) <= 3 Then MsgBox "无法处理根目录!",64,"提示":WScript.Quit

Dim objFSO

Set objFSO = CreateObject("Scripting.FileSystemObject")

TreeStr = TreePath & FormatSize(objFSO.GetFolder(TreePath).Size) & vbCrLf

Tree TreePath,""

Set objFile = objFSO.CreateTextFile(OutFile,True)

objFile.Write TreeStr

objFile.Close

Set objFile = Nothing

Set objFSO = Nothing

MsgBox "查看当前目录下的OutTree.txt",vbInformation,"完成 - vbsTree"

Sub Tree(Path,SFSpace)

Dim i,TempStr,FlSpace

FlSpace = SFSpace & " "

Set CrntFolder = objFSO.GetFolder(Path)

i = 0:TempStr = "├─"

For Each ConFile In CrntFolder.Files

i = i + 1

If i = CrntFolder.Files.Count And CrntFolder.SubFolders.Count = 0 Then TempStr = "└─"

TreeStr = TreeStr & FlSpace & Tempstr & ConFile.name & FormatSize(ConFile.size) & vbCrLf

Next

i = 0:TempStr = "├─"

For Each SubFolder In CrntFolder.SubFolders

i = i + 1

If i = CrntFolder.SubFolders.Count Then

TempStr = "└─"

SFSpace = FlSpace & " "

Else

SFSpace = FlSpace & "│"

End If

TreeStr = TreeStr & FlSpace & TempStr & SubFolder.name & FormatSize(SubFolder.size) & vbCrLf

Tree SubFolder,(SFSpace)

Next

End Sub

Function FormatSize(SZ)

Dim i

Do While SZ > 1024

i = i + 1

SZ = SZ \ 1024

Loop

FormatSize = " (" & SZ & Mid(Unit4Size,1 + 2 * i,2) & ")"

End Function

Function BFF(title, flag, dir)

On Error Resume Next

Dim oShell, oItem, oStr

Set oShell = WScript.CreateObject("Shell.Application")

Set oItem = oShell.BrowseForFolder(&H0, title, flag, dir)

oStr = oItem.Title

If Err <> 0 Then

Set oShell = Nothing

Set oItem = Nothing

Exit Function

End If

If InStr(oStr, ":") Then

BFF = mid(oStr,InStr(oStr, ":")-1, 2)

Else

Select Case oStr

Case "桌面"

BFF = WS.SpecialFolders("Desktop")

Case "我的文档"

BFF = WS.SpecialFolders("MyDocuments")

Case "我的电脑"

MsgBox "无效目录!",64,"提示":WScript.Quit

Case "网上邻居"

MsgBox "无效目录!",64,"提示":WScript.Quit

Case Else

BFF = oItem.ParentFolder.ParseName(oItem.Title).Path

End Select

End If

Set oShell = Nothing

Set oItem = Nothing

If Right(BFF,1)<> "\" Then

BFF = BFF & "\"

End If

On Error GoTo 0

End Function

更多信息请查看脚本栏目
易贤网手机网站地址:vbsTree VBS脚本模拟tree命令
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标