中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-26 22:51
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]vbs版Tree 查看 2,620 回复 23
楼 主 [原创]vbs版Tree 发表于 2008-12-26 20:23 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
不知道当发不发。



'-------------vbsTree.vbs------------------------
'描述:用vbs输出一个文件夹的目录结构。
' By Slore @ 2008-12-26
'------------------------------------------------

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
ShowSize
ShowSize = MsgBox("是否需要显示大小?",vbYesNo,"vbsTree By Slore") - 7

Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
TreeStr = TreePath
on Error Resume Next '容错模式(忽略特殊文件夹错误)
If ShowSize Then TreeStr = TreeStr & FormatSize(objFSO.GetFolder(TreePath).Size)
TreeStr = TreeStr & vbCrLf
starttime = Timer
Tree TreePath,""
endtime = Timer
Set objFile = objFSO.CreateTextFile(OutFile,True)
objFile.Write TreeStr
objFile.Close
Set
objFile = Nothing
Set
objFSO = Nothing
tottime = endtime - starttime
tottime = FormatNumber(tottime,3,True) & ""
MsgBox "请查看当前目录下的OutTree.txt" & vbCrLf & "用时:" & tottime,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
If ShowSize Then TreeStr = TreeStr & FormatSize(ConFile.Size)
TreeStr = TreeStr & vbCrLf
Next
i = 0:TempStr = "├─"
SFSpace = FlSpace & ""
For Each SubFolder In CrntFolder.SubFolders
i = i + 1
If i = CrntFolder.SubFolders.Count Then
TempStr = "└─"
SFSpace = FlSpace & " "
End If
TreeStr = TreeStr & FlSpace & TempStr & SubFolder.Name
If ShowSize Then TreeStr = TreeStr & FormatSize(SubFolder.size)
TreeStr = TreeStr & 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





E:\IconWorkShop (11MB)
├─axlibico.dll (383KB)
├─Axstdctl.dll (18KB)
├─Context.hlp (68KB)
├─IconWorkshop.exe (5MB)
├─Main.chm (4MB)
├─MediaFiles.axd (4KB)
├─ResChs.dll (388KB)
├─sn.txt (32字节)
├─UnInstall.exe (74KB)
├─UnInstall.ini (109字节)
├─Color Swatches (54KB)
│ ├─16 Colors (extended).axco (1KB)
│ ├─16 Colors.axco (343字节)
│ ├─Dark Hues.axco (3KB)
│ ├─Default (large).axco (6KB)
│ ├─Default (small).axco (3KB)
│ ├─Grayscale (128 levels).axco (1KB)
│ ├─Grayscale (256 levels).axco (3KB)
│ ├─IconWorkshopSwatches (3KB)
│ ├─Medium Hues.axco (3KB)
│ ├─Pastel Hues.axco (3KB)
│ ├─Photoshop Default.axco (1KB)
│ ├─Pure Hues.axco (3KB)
│ ├─Spectrum (variable lightness).axco (6KB)
│ ├─Spectrum (variable saturation).axco (6KB)
│ ├─Spectrum.axco (3KB)
│ ├─Web Safe by VisiBone.axco (3KB)
│ ├─Web Safe.axco (2KB)
│ └─Windows XP.axco (376字节)
└─Color Tables (3KB)
├─IconWorkshop Standard.axct (768字节)
├─Macintosh.axct (768字节)
├─Web Safe.axct (768字节)
├─Windows XP.axct (768字节)
└─Windows.axct (768字节)



[ Last edited by slore on 2008-12-26 at 20:25 ]
本帖最近评分记录 (共 5 条) 点击查看详情
评分人分数时间
HAT +12 2008-12-26 23:14
moniuming +11 2008-12-27 10:06
523066680 +7 2008-12-27 17:21
newxso +2 2008-12-29 10:24
ooaf +4 2009-01-05 23:35
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2 发表于 2008-12-26 21:25 ·  中国 台湾 中华电信(HiNet)数据中心
初级用户
积分 26
发帖 25
注册 2008-11-07 16:06
17年会员
UID 130293
性别 男
状态 离线
,哦哦,感谢分享,收下学习了,试用了一下,不错呢!
3 发表于 2008-12-27 15:18 ·  美国 加利福尼亚州 橙 布雷亚 DreamHost公司
新手上路
积分 18
发帖 15
注册 2007-03-25 08:21
19年会员
UID 82858
性别 男
状态 离线
谢谢分享
输出一个文件夹的目录结构。
如果要是能 输出磁盘根目录(如:E:\) 的目录结构就更好了
现在只能输出 E:\ 中的文件目录 不能输出次级目录结构
4 发表于 2008-12-27 16:02 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
测试可以输出。不过我的是NTFS的,有些文件夹权限有设置,遇到不能获取
权限的就终止了,但是能得到。

磁盘的话磁盘大小会得不到,因为用的是取文件夹的size不是driver的。

[ Last edited by HAT on 2009-1-2 at 21:28 ]
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
5 发表于 2009-01-02 15:55 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线

S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore

此乃水贴,我想到一个东西

W 微笑 A 爱 L 乐观 F 放松 R 热情
Walfr

就是没有slore华丽
6 发表于 2009-01-02 19:46 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
Originally posted by 523066680 at 2009-1-2 03:55 PM:

此乃水贴,我想到一个东西

W 微笑 A 爱 L 乐观 F 放松 R 热情
Walfr

就是没有slore华丽 :(

Walfr一看就不像英文单词,哪儿有fr结尾的啊……至少我是没见过。
7 发表于 2009-01-02 21:13 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
我郁闷。。。
没有编辑权限……那个没想到那么长。。。

HAT看到了把那个 驱动器遍历的code段删除掉=。=

呵呵,那个是先有Slore再找的意思,所以好找。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
8 Re 7楼 发表于 2009-01-02 21:28 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Done ^_^
9 发表于 2009-01-03 14:09 ·  中国 广东 深圳 电信
初级用户
★★
积分 153
发帖 103
注册 2008-03-27 19:38
18年会员
UID 114210
性别 男
状态 离线
好啊!
10 发表于 2009-01-04 23:19 ·  中国 北京 联通
中级用户
★★
积分 313
发帖 162
注册 2007-04-02 06:45
19年会员
UID 83693
性别 男
状态 离线
在我电脑上出现问题
附件
未命名.bmp
11 发表于 2009-01-05 13:42 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
你选的是文件夹么?
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
12 发表于 2009-01-05 21:40 ·  中国 北京 联通
中级用户
★★
积分 313
发帖 162
注册 2007-04-02 06:45
19年会员
UID 83693
性别 男
状态 离线
“桌面”,有问题吗?
13 发表于 2009-01-06 12:23 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
那个返回的是特殊文件夹标号,有别人给改过可以支持那种的,我这个原版没处理。

你在我的电脑展开选到就可以了。。。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
14 发表于 2010-03-27 09:33 ·  中国 天津 电信
新手上路
积分 9
发帖 9
注册 2010-03-26 15:03
16年会员
UID 163096
性别 男
状态 离线
我这里测试只能列出部分目录,很多都无法列出来,怎么回事?
15 发表于 2010-03-27 10:00 ·  中国 天津 电信
新手上路
积分 9
发帖 9
注册 2010-03-26 15:03
16年会员
UID 163096
性别 男
状态 离线
我使用这个脚本列出E盘所有文件及文件夹的目录树,E盘文件很多,只能列出前四个文件夹以及目录结构,后面的都列不出来,怎么回事?
论坛跳转: