【VB】自动生成文件夹目录

今天早上背了一叠SAT单词,奖励自己玩会儿电脑。很想要一份树状的文件清单,告诉我这个电脑上到底有那些文件夹,又分别放了什么文件。 

欣欣想要达到的效果是这样的—— 

比如c盘上共有3个文件名叫A0、B0、C0,A0里有3个文件1、2、3和一个名为D1的文件夹,B0里有文件4、5,C0里有6,D1里有文件7。

欣欣希望拿到一份这样的清单:

A0
+1
+2
+3
+D1
++7
B0
+4
+5
C0
+6

开始构思。决定先完成第一步,把指定的一个文件夹下所有文件列出来。

VB绘出的界面是这个样子的(隐去部分不相关内容): 

【图】 

左上角(driver控件Driver1)选择驱动,下面的(控件Dir1)选择文件夹,单击某个文件夹的名称后,在中间列表(控件File1)显示单个文件夹下的所有文件;单击按钮“start”(command控件cmd),在右侧空白的文本框(Text控件lbl)里显示树状清单。
第一步用for循环轻松完成,各种控件没有翻书复习就搞定了,运行结果:

e:\My Documents\建模
------------------------------------
+2011年国际原油价格走势分析.pdf
+2012年HiMCM(全美高中生数学建模竞赛)准备工作.doc
+3程序.txt
+file.bak
+file.exe
+file.o
+file.pas
+file_random.bak
+file_random.exe
+file_random.o
+file_random.pas
+graph.bak
+graph.pas
+HiMCM2012.pdf
+Interpreting Graph欣2.doc
+Interpreting Graph欣3.doc
+LA.txt
+LA_odata.txt
+LA2011.txt
+LA2011-2012.txt
+LA2012.txt
+LA油价2011.xls
+letter.doc
+mcm美国数学建模历年试题.txt
+程序.txt
+第二个程序.txt
+国际原油价格数据.xlsx
+建模成员名单.pdf
+留言.txt
+美国数学建模英语论文规范格式.doc
+美国数学建模英语论文规范格式_.doc
+数据2.doc
+数学建模B题:市场预测(油价).doc
=======================================

但这个称不上树状。第二步应该是把线性的清单“修理”成树状的,可是立马想到个致命错误:VB不支持递归。
于是第二步暂停。

哪天想到某个既可以递归又不麻烦的方法时再说吧。~

附:欣欣的VB代码

Private Sub cmd_Click()
  '开始生成目录
  lbl.Text = lbl.Text + File1.Path + Chr(13) + Chr(10) + "------------------------------------" + Chr(13) + Chr(10)
  For i = 0 To File1.ListCount - 1
  File1.ListIndex = i
    lbl.Text = lbl.Text + "+" + File1.FileName + Chr(13) + Chr(10)
  Next i
  lbl.Text = lbl.Text + "=======================================" + Chr(13) + Chr(10)
End Sub

Private Sub Dir1_Change()
  File1.Path = Dir1.Path        '当选择另一个文件夹时,文件列表同步更新
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.Drive    '当选择另一个驱动时,文件夹列表同步更新
End Sub

评论区

  1. 淋巴水肿 2013年7月24日 回复

    VB制作,这是什么制作,我没有听说过?

    • 甜菜欣欣 2013年7月24日 回复

      @淋巴水肿:VB的全称是visual Basic,是一种面向对象的程序语言。我几年前学习了这种语言,现在还时不时拿来开发小工具,就像你看到的这个

  2. 爱特微博客 2013年7月24日 回复

    看不懂!VB没学过!

    • 甜菜欣欣 2013年7月25日 回复

      @爱特微博客:vb上手很快,需要用的时候现学都来得及

  3. 小怪兽 2013年7月25日 回复

    来瞅瞅。。支持一个。。表示看不懂。

    • 甜菜欣欣 2013年7月25日 回复

      @小怪兽:没事,目前为止还没有人说看懂的=、=|||

      • 小怪兽 2013年7月25日

        @甜菜欣欣:表示忒复杂了。。

      • 甜菜欣欣 2013年7月25日

        @小怪兽:代码不长,控件框框也没几个,但我还是得承认编程时把自己绕晕了, 也不知道怎么一弄然后成功了

      • 小怪兽 2013年7月25日

        @甜菜欣欣:不错,,不错哦。。呱唧呱唧

      • 甜菜欣欣 2013年7月25日

        @小怪兽:嘿嘿,我也觉得能糊弄住电脑君很不错~

  4. 调研报告 2013年7月25日 回复

    VB语言用的比较少 一般是用JAVA

  5. chrt 2013年7月30日 回复

    不错!虽然不懂VB,但关于递归倒是可以提个小建议。用栈可以模拟。不知道VB能不能实现。

    • 甜菜欣欣 2013年7月30日 回复

      @chrt:哇哦,虽然没有试过,但是觉得用这个办法真的可以呢!~可惜我算法学得太弱了,不知道能不能做出来

发表评论

电子邮件地址不会被公开。 必填项已用*标注