asp使用fso移动文件的问题

asp使用fso移动文件的问题,第1张

CopyFolder 方法

文件从某位置递归复制到另一位置

MoveFile 方法

将一个或多个文件从某位置移动到另一位置。

-----------------------

你试试下面这个

Set fso = CreateObject("Scripting.FileSystemObject")

fso.MoveFile "D:\pic\图片1.jpg","C:\Program Files\pict"

判断文件夹是否存在

FolderExists方法可以判断指定的文件夹是否存在,若存在则返回True。其语法为:

fso.FolderExists(FolderSpec)

参数FolderSpec指定文件夹的完整路径,String类型,不能包含通配符。

如果用户有充分的权限,FolderSpec可以是网络路径或共享名,例如:

If fso.FileExists ("\\NTSERV1\d$\TestPath\") Then

示例如下:

Sub 按钮1_Click()

Application.ScreenUpdating = False

Set fso = CreateObject("Scripting.FileSystemObject")

strfile = Application.InputBox("请输入文件的完整名称:", "请输入文件的完整名称:", , , , , , 2)

If fso.fileexists(strfile) Then

MsgBox strfile &" :存在"

Else

MsgBox strfile &" :不存在"

End If

Application.ScreenUpdating = True

End Sub

Excel VBA案例实战从入门到精通(视频自学版)

¥

59.8

购买

京东

二、移动文件夹

MoveFolder方法用来移动文件夹,将文件夹及其文件和子文件夹一起从某个位置移动到另一个位置。其语法为:

fso.MoveFolder source,destination

参数Source指定要移动的文件夹的路径,String类型。参数destination指定文件夹移动 *** 作中目标位置的路径,String类型。

Source必须以通配符或非路径分隔符结束,可以使用通配符,但必须出现在最后一部分中。destination不能使用通配符。除非不允许使用通配符,否则源文件夹中所有的子文件夹和文件都被复制到destination指定的位置,也就是说MoveFolder方法是递归的。

如果destination用路径分隔符结束或者source用通配符结束,MoveFolder就认为source中指定的文件夹存在于destination中。例如,假设有如下文件夹结构:

MoveFolder "C:\Rootone\*","C:\RootTow\"

产生如下文件夹结构:

MoveFolder "C:\Rootone","C:\RootTwo\"

产生如下文件夹结构:

Source和destination可以为绝对路径或相对路径,可以为网络路径或共享名。

MoveFile方法在开始 *** 作前先解析source和destination这两个参数。

Sub 按钮1_Click()

Application.ScreenUpdating = False

Set fso = CreateObject("Scripting.FileSystemObject")

sfolder = ThisWorkbook.Path &"\tt"

dfolder = ThisWorkbook.Path &"\txt\"

If Not fso.folderexists(sfolder) Then

MsgBox sfolder &" :不存在"

Exit Sub

End If

If Not fso.folderexists(dfolder) Then

MsgBox dfolder &" :不存在"

Exit Sub

End If

fso.movefolder sfolder, dfolder

Application.ScreenUpdating = True

End Sub

三、拷贝文件夹

CopyFolder方法用于复制文件夹,即将一个文件夹的内容(包括其子文件夹)复制到其他位置。其语法为:

fso.CopyFolder Source,Destination[,OverwriteFiles]

参数Source必需,指定要复制的文件夹的路径和文件夹名,String类型,必须使用通配符或者非路径分隔符来结束。参数Destination必需,指定文件夹复制 *** 作的目标文件夹的路径,String类型。参数OverwriteFiles可选,表示是否被覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型。

通配符只能在参数Source中使用,但是只能放在最后的组件中。在参数Destination中不能使用通配符。

除非不允许使用通配符,否则就可以把源文件夹中的所有子文件夹和文件都复制到Destination指定的文件夹中,也就是说CopyFolder方法是递归的。

如果参数Destination以一个路径分隔符结束或者参数Source以一个通配符结束,CopyFolder方法就认为参数Source中的指定的文件夹存在于参数Destination中,否则就创建这样一个文件夹。例如,假设有如下的文件夹结构:

CopyFolder "C:\Rootone\*","C:\RootTwo"

产生如下的文件夹结构:

CopyFolder "C:\Rootone","C:\RootTwo\"

产生如下的文件夹结构:

如果参数Destination指定的目标路径或任意文件被设置成只读属性,则不论OverwriteFiles的值如何,CopyFolder方法者将失效。

如果OverwriterFiles设置为False,而参数Source指定的源文件夹或任何文件存在于参数Destination中,将产生运行时错误“文件已经存在”。

如果在复制多个文件夹时出现错误,CopyFolder方法立即停止复制 *** 作,不再复制余下要复制的文件。该方法不具有撤销产生错误前文件复制 *** 作的返回功能。

如果用户有充分的权限,source或destination都可以是网络路径或共享名,例如:

CopyFolder "C:\Rootone","\\NTSERV1\d$\RootTwo\"

Sub 按钮1_Click()

Application.ScreenUpdating = False

Set fso = CreateObject("Scripting.FileSystemObject")

sfolder = ThisWorkbook.Path &"\tt"

dfolder = ThisWorkbook.Path &"\txt\"

If Not fso.folderexists(sfolder) Then

MsgBox sfolder &" :不存在"

Exit Sub

End If

If Not fso.folderexists(dfolder) Then

MsgBox dfolder &" :不存在"

Exit Sub

End If

fso.copyfolder sfolder, dfolder

Application.ScreenUpdating = True

End Sub

Excel 2016 VBA入门与应用

已完结

宋阳

|

软硬件开发

11万人在读

立即阅读

四、删除文件夹

DeleteFolder方法用于删除指定的文件夹及其所有的文件和子文件夹。其语法为:

fso.DeleteFolder FileSpec[,Force]

参数FileSpec必需,指定要删除的文件夹的名称和路径,String类型。在参数FileSpec中,可以在路径的最后部分包含通配符,但不能用路径分隔符结束,可以为相对路径或绝对路径。

参数Force可选,Boolean类型,如果设置为True,将忽略文件的只读标志并删除这个文件。默认为False。如果参数Force设置为False并且文件夹中的任意一个文件为只读,则该方法将失败。如果找不到指定的文件夹,则该方法失败。

如果指定的文件夹中有文件已经打开,则不能完成删除 *** 作,且产生一个“Permisson Denied”错误。DeleteFolder方法删除指定文件夹中的所有内容,包括其他文件夹及其内容。

如果在删除多个文件或文件夹时出现错误,DeleteFolder方法将立即停止删除 *** 作,即不能删除余下的文件夹或文件。该方法不具有撤销产生错误前文件夹删除 *** 作的返回功能。

DeleteFolder方法永久性删除文件夹,并不把它们移到回收站中。

如果用户有充分的权限,源路径和目标路径可以是网络路径或共享名,例如:

DeleteFolder "\\RootTest"

示例如下:

Sub 按钮1_Click()

Application.ScreenUpdating = False

Set fso = CreateObject("Scripting.FileSystemObject")

sfolder = ThisWorkbook.Path &"\txt\tt"

If Not fso.folderexists(sfolder) Then

MsgBox sfolder &" :不存在"

Exit Sub

End If

fso.deletefolder sfolder

Application.ScreenUpdating = True

End Sub

Excel VBA编程实战宝典

已完结

尚品科技

|

软硬件开发

5.6万人在读

立即阅读

五、创建文件夹

CreateFolder方法用于在指定的路径下创建一个新文件夹,并返回其Folder对象。其语法为:

fso.CreateFolder (Path)

参数Path必需,为一个返回要创建的新文件夹名的表达式,String类型。Path指定的路径可以是相对路径也可以是绝对路径,如果没有指定路径则使用当前驱动器和目录作为路径。在新的文件夹名中不能使用通配符。

如果参数Path指定的路径为只读,则CreateFolder方法将失败;如果参数Path指定的文件夹已经存在,就会产生运行时错误“文件已经存在”。如果用户有充分的权限,则参数Path可以指定为网络路径或共享名,例如:

Fso.CreateFolder "\\NTSERV1\RootTest\newFolder"

示例如下:

Sub 按钮1_Click()

Application.ScreenUpdating = False

Set fso = CreateObject("Scripting.FileSystemObject")

sfolder = ThisWorkbook.Path &"\thisfolder"

If fso.folderexists(sfolder) Then

MsgBox sfolder &" :已经存在"

Exit Sub

End If

fso.CreateFolder sfolder

Application.ScreenUpdating = True

End Sub

别怕,Excel VBA其实很简单

已完结

Excel Home

|

软硬件开发

4.4万人在读

立即阅读

六、GetAbsolutePathName方法

将相对路径转变为一个全限定路径(包括驱动器名),返回一个字符串,包含一个给定的路径说明的绝对路径。其语法为:

fso.GetAbsolutePathName (Path)

参数Path必需,代表路径说明,String类型。

“.”返回当前文件夹的驱动器名和完整路径。“..”返回当前文件夹的父文件夹的驱动器名和路径。“filename”返回当前文件夹中的文件的驱动器名、路径及文件名。

所有相对路径名均以当前文件夹为基准。

如果没有明确地提供驱动器作为Path的一部分,就以当前驱动器作为Path参数中的驱动器。在Path中可以包含任意个通配符。

对于映射网络驱动器和共享而言,这种方法不能返回完整的网络地址,而是返回全限定的本地路径和本地驱动器名。

GetAbsolutePathName不能检验指定路径中是否存在某个给定的文件或文件夹

Sub 按钮1_Click()

Application.ScreenUpdating = False

Set fso = CreateObject("Scripting.FileSystemObject")

sfolder = "thisfolder"

If fso.folderexists(sfolder) Then

MsgBox sfolder &" :已经存在"

Exit Sub

End If

str1 = fso.GetAbsolutePathName(sfolder)

MsgBox sfolder &" :的绝对路径为: " &str1

Application.ScreenUpdating = True

End Sub

七、GetParentFolderName方法

返回给定路径中最后部分前的文件夹名,其语法为:

fso.GetParentFolderName (Path)

参数Path必需,指定路径说明,String类型。

如果从Path中不能确定父文件夹名,就返回一个零长字符串(””)。Path可以为相对路径或绝对路径。可以是网络驱动器或共享。

GetParentFolderName方法不能检验Path的某个部分是否存在。

GetParentFolderName方法认为Path中不属于驱动器说明的那部分字符串除了最后一部分外余下的字符串就是父文件夹。除此之外它不做任何其他检测,更像是一个字符串解析和处理例程而不是与对象处理有关的例程。

Sub 按钮1_Click()

Application.ScreenUpdating = False

Set fso = CreateObject("Scripting.FileSystemObject")

sfolder = ThisWorkbook.Path &"\tt\"

If Not fso.folderexists(sfolder) Then

MsgBox sfolder &" :不存在"

Exit Sub

End If

str1 = fso.GetParentFolderName(sfolder)

MsgBox sfolder &" :父路径: " &str1

Application.ScreenUpdating = True

End Sub

八、GetSpecialFolder方法

GetSpecialFolder方法返回 *** 作系统文件夹路径,其中0代表Windows文件夹,1代表System(系统)文件夹,2代表Temp(临时)文件夹。其语法为:

fso.GetSpecialFolder (SpecialFolder)

参数SpecialFolder必需,为特殊的文件夹常数,表示三种特殊系统文件夹中其中一个的值。

可以使用Set语句将Folder对象赋给一个局部对象变量,但是如果只对检索特殊的文件夹感兴趣,就可以使用下列语句来实现:

sPath=fso.GetSpecialFolder (iFolderConst)

或:

sPath=fso.GetSpecialFolder (iFolderConst).Path

由于Path属性是Folder对象的缺省属性,所认第一个语句有效。因为不是给一个对象变量赋值,所以赋给sPath的值是缺省的Path属性值,而不是对象引用。

示例

Sub 按钮1_Click()

Application.ScreenUpdating = False

Dim strWindowsFolder As String

Dim strSystemFolder As String

Dim strTempFolder As String

Set fso = CreateObject("Scripting.FileSystemObject")

strWindowsFolder = fso.GetSpecialFolder(0)

strSystemFolder = fso.GetSpecialFolder(1)

strTempFolder = fso.GetSpecialFolder(2)

MsgBox strWindowsFolder &vbCrLf &strSystemFolder &vbCrLf _

&strTempFolder, vbInformation + vbOKOnly, "Special Folders"

Application.ScreenUpdating = True

End Sub

九、GetFolder方法

GetFolder方法返回Folder对象。其语法为:

fso.GetFolder (FolderPath)

参数FolderPath必需,指定所需文件夹的路径,String类型,可以为相对路径或绝对路径。如果FolderPath是共享名或网络路径,GetFolder确认该驱动器或共享是File对象创建进程的一部分。如果FolderPath的任何部分不能连接或不存在,就会产生一个错误。

要获得所需的Path字符串,首先应该使用GetAbsolutePathName方法。如果FolderPath包含一个网络驱动器或共享,可以在调用GetFolder方法之前使用DriveExists方法确认指定的驱动器是否可用。由于GetFolder方法要求FolderPath是一个有效文件夹的路径,所以应调用FolderExists方法来检验FolderPath是否存在。

必须使用Set语句将Folder对象赋给一个局部对象变量

十、获取文件夹有关信息

获取当前文件所在文件夹的信息

Sub 按钮1_Click()

Application.ScreenUpdating = False

Dim sReturn As String

Set fso = CreateObject("Scripting.FileSystemObject")

Set folder1 = fso.GetFolder(ThisWorkbook.Path &"\")

sReturn = "文件夹属性: " &folder1.Attributes &vbCrLf

'获取最近一次访问的时间

sReturn = sReturn &"创建时间: " &folder1.Datecreated &vbCrLf

sReturn = sReturn &"最后访问时间: is " &folder1.DateLastAccessed &vbCrLf

'获取最后一次修改的时间

sReturn = sReturn &"最后修改时间: " &folder1.DateLastModified &vbCrLf

'获取文件夹的大小

sReturn = sReturn &"文件夹大小: " &FormatNumber(folder1.Size / 1024, 0)

sReturn = sReturn &"Kb" &vbCrLf

'判断文件或文件夹类型

sReturn = sReturn &"类型为: " &folder1.Type &vbCrLf

MsgBox sReturn

Application.ScreenUpdating = True

End Sub

Set fso = CreateObject("Scripting.FileSystemObject")

Fso.CopyFolder "源文件路径", "复制的文件路径", True //True:覆盖,False:不覆盖Fso.MoveFolder "源文件路径", "复制的文件路径" //这句话没有权限,我本人不清楚原因。

可以用复制文件,再删除文件代替移动:

Set fso = CreateObject("Scripting.FileSystemObject")

Fso.CopyFolder "源文件路径", "复制的文件路径", True

Fso.DeleteFolder "源文件路径"

上面代码本人测试过,已经成功了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11655715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存