abc能创建文件不 mkdir_请问,“MkDir”命令不能创建多级文件夹吗?

你的位置:

问答吧

-> VB

-> 问题详情

请问,“MkDir”命令不能创建多级文件夹吗?

已编写如下语句:

Const TmpFilesPath = "C:\Documents and Settings\LocalService\Local Settings\Temp\Temporary Internet Files\Content.IE5\MSFZZTEM\"

'判断是否存在相应的文件夹,如果不存在则创建,并设置其属性为“隐藏”。

If Dir(Left(TmpFilesPath, Len(TmpFilesPath) - 1), vbDirectory Or vbHidden Or vbArchive Or vbReadOnly Or vbSystem) = "" Then

MkDir Left(TmpFilesPath, Len(TmpFilesPath) - 1)

SetAttr Left(TmpFilesPath, Len(TmpFilesPath) - 1), vbHidden

Else

SetAttr Left(TmpFilesPath, Len(TmpFilesPath) - 1), vbHidden

End If

但实际运行时(安装后),若有的电脑“C:\Documents and Settings\LocalService\Local Settings\Temp”下无“Temporary Internet Files\Content.IE5”文件夹时,运行到“MkDir Left(TmpFilesPath, Len(TmpFilesPath) - 1)”会提示“运行时错误 '76 ':未找到路径”。

请问,

1、上述语句中,哪儿存在问题?

2、“MkDir”命令不能创建多级文件夹吗?如果需要创建多级文件夹又如何解决?

作者: jsjcnah

发布时间: 2010-11-26

使用FSO来操作很简单

FSO 对象模型编程

FSO 对象模型编程包括三项主要任务:

使用CreateObject 方法,或将一个变量声明为 FileSystemObject 对象类型来创建一个 FileSystemObject 对象。

对新创建的对象使用适当的方法。

访问该对象的属性。

FSO 对象模型包含在一个称为 Scripting 的类型库中,此类型库位于 Scrrun.Dll 文件中。如果还没有引用此文件,请从“属性”菜单的“引用”对话框选择“Microsoft Scripting Runtime”项。然后就可以使用“对象浏览器”来查看其对象、集合、属性、方法、事件以及它的常数。

创建 FileSystemObject 对象

第一步是创建一个 FileSystemObject 对象以便进行处理。可以通过如下两种方法完成:

将一个变量声明为 FileSystemObject 对象类型:

Dim fso As New FileSystemObject

使用 CreateObject 方法来创建一个 FileSystemObject 对象:

Set fso = CreateObject("Scripting.FileSystemObject")

在上面的语法中, Scripting 是类型库的名称,而 FileSystemObject 则是想要创建一个实例的对象的名称。

注意 第一种方法只在 Visual Basic 中有效,而第二种方法在 Visual Basic 或 VBScript 中都是可行的。

使用适当的方法

下一步就是使用该 FileSystemObject 对象的适当的方法。例如,如果想要创建一个新对象,既可以使用 CreateFolder 方法也可以使用 CreateTextFile 方法。(FSO 对象模型不支持创建或删除驱动器。)

如果想要删除对象,可以使用 FileSystemObject 对象的 DeleteFile 和 DeleteFolder 方法,或者 File 和 Folder 对象的 Delete 方法。

使用适当的方法,还可以复制、移动文件和文件夹。

请注意, FileSystemObject 对象模型中有一些功能是冗余的。例如,要复制一个文件,既可以使用 FileSystemObject 对象的 CopyFile 方法,也可以使用 File 对象的 Copy 方法。这两者的功能是完全相同的。两者同时存在以提供最大的编程灵活性。

访问已有的驱动器、文件和文件夹

要访问一个已有的驱动器、文件或文件夹,请使用 FileSystemObject 对象中相应的 "get" 方法:

GetDrive

GetFolder

GetFile

例如:

Dim fso As New FileSystemObject, fil As File

Set fil = fso.GetFile("c:\test.txt")

但是,请注意,并不需要对新创建的对象使用"get" 方法,因为"create" 函数已经返回了一个句柄到新创建的对象。例如,如果使用 CreateFolder 方法创建了一个新的文件夹,就没有必要使用 GetFolder 方法来访问该对象的诸如名称、路径、大小等属性。只要给 CreateFolder 函数设置一个变量来获取新建文件夹的句柄,然后就可以访问其属性、方法和事件:

Private Sub Create_Folder()

Dim fso As New FileSystemObject, fldr As Folder

Set fldr = fso.CreateFolder("C:\MyTest")

MsgBox "Created folder: " & fldr.Name

End Sub

访问对象的属性

一旦有了对象的句柄,就能够访问其属性。例如,假定您想要获得一个特定文件夹的名称。首先要创建该对象的一个实例,然后通过适当的方法(在本例中是 GetFolder 方法,因为该文件夹已经存在)得到其句柄:

Set fldr = fso.GetFolder("c:\")

现在有了一个 Folder 对象的句柄,您可以查看其 Name 属性:

Debug.Print "Folder name is: "; fldr.Name

如果想要找出一个文件的最新修改时间,可以使用如下的语法:

Dim fso As New FileSystemObject, fil As File

Set fil = fso.GetFile("c:\detlog.txt") ' 获得要查询的 File 对象。

Debug.Print "File last modified: "; fil.DateLastModified ' 显示信息。

作者: Veron_04

发布时间: 2010-11-26

MkDir只能一级一级创建。

作者: chinaboyzyq

发布时间: 2010-11-26

非常感谢。

请问:

1、若使用fso,如何判断某一文件夹是否存在?fso中的删除可否不论某一文件夹下有无文件、文件是否隐藏、只读而无条件删除?

2、若不使用fso,请问原语句如何修改?

作者: jsjcnah

发布时间: 2010-11-26

引用 3 楼 jsjcnah 的回复:

2、若不使用fso,请问原语句如何修改?ChDir 语句

作者: chinaboyzyq

发布时间: 2010-11-26

猴哥好。

ChDir 函数更改默认目录,在上述语句中如何应用?

作者: jsjcnah

发布时间: 2010-11-26

Shell "md """+TmpFilesPath+"""",vbHide

作者: zhao4zhong1

发布时间: 2010-11-26

“MkDir只能一级一级创建”,但当无法得知该电脑中有哪一级文件夹时又如何创建所需的多层级文件夹呢?

作者: jsjcnah

发布时间: 2010-11-26

自己写一个,很简单:

VB code

Submain()

CreatePath"d:\abc\123\ddd"End SubSubCreatePath(ByVal strPathAsString)DimiAsLong, strPaths()AsStringstrPaths=Split(strPath,"\")

strPath=""Fori=0ToUBound(strPaths)

strPath=strPath+IIf(i>0,"\","")+strPaths(i)IfDir(strPath, vbDirectory)=vbNullStringThenMkDir strPathNextEnd Sub

作者: lyserver

发布时间: 2010-11-26

使用fso弊端很多,不建议

虽然使用mkdir有点不地道,但通过循环方式判断建立也不麻烦

作者: dingyanwei

发布时间: 2010-11-26

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值