标题: [原创] VBS脚本模拟tree命令:vbsTree [打印本页]
作者: slore 时间: 2008-12-26 16:29 标题: VBS脚本模拟tree命令:vbsTree
'-------------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
自己测试下效果看看~
作者: fastslz 时间: 2008-12-27 18:10
我把文件夹浏览部分优化下
- '-------------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
复制代码
作者: slore 时间: 2008-12-27 23:55
根目录是可以遍历的……
对了,要更新copy下cn-dos那个吧,那个做了点修改。
作者: HMPT 时间: 2012-12-8 23:05
回复 2# fastslz
无法作用于中文目录啊。。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |