收录日期:2019/09/19 00:16:31 时间:2016/05/15 20:58:20 标签:ASP
Str_path_a="c:\autoexec.bat"
Str_path_b="c:\autoexec.bak"
set myFileObject=Server.CreateObject("Scripting.FileSystemObject")
  set MyFile=MyFileObject.CopyFile (Str_path_a,Str_path_b)
       MyFile.CopyFile

我用这个对象时,总是提示我缺少对象: '[undefined]' 
但是文件又能COPY 并改名...是什么原因啊?

   如果有相同的文件名时,我想覆盖它,如何写参数。。?
你的Str_path_b的属性是否为只读?
试试下面的代码
---------------------------------------------------


<%@ LANGUAGE="VBScript" %>


<% cf = Server.MapPath("copyfrom.txt")
   ct = Server.MapPath("copyto.txt")
   Set fso = Server.CreateObject("Scripting.FileSystemObject")
   If fso.FileExists(cf) Then
     fso.CopyFile cf, ct, True
     Response.Write "copyfrom.txt 已被复制到 copyto.txt"
   Else
     Response.Write "copyfrom.txt 不存在,复制失败 !"
   End If 
%>
set myFileObject=Server.CreateObject("Scripting.FileSystemObject")
改成:
set myFileObject=CreateObject("Scripting.FileSystemObject")
5.4.1 FileSystemObject对象成员概要
       FileSystemObject对象提供一个属性和一系列方法,可用它们来操纵FileSystemObject对象实现的一些从属对象。这里提供了全部的内容概要,然后介绍每一个从属对象。
1.  FileSystemObject的属性
FileSystemObject对象只有一个属性,它用于得到当前机器上的所有有效驱动器的列表,如表5-4所示:
表5-4  FileSystemObject对象的属性及说明
属 性 
说 明 

Drivers 
返回本地计算机可用的驱动器列表。 

2.  FileSystemObject的方法
FileSystemObject对象提供了使用从属对象的一系列方法,从属对象包括Drive、Folder和File等对象。它也实现了用于TextStream对象的两个方法:CreateTextFile和OpenTextFile。根据所使用的对象的类型,将方法划分为三类。
(1)    与驱动器有关的方法
与驱动器有关的方法如表5-5所示:
表5-5 与驱动器有关的方法及说明
方 法 
说 明 

DriveExists(drivespec) 
如果在drivespec中指定的驱动器存在,则返回True,否则返回False。drivespec参数可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径 

GetDrive(drivespec) 
返回drivespec指定的驱动器所对应的Drive对象。drivespec可以包含冒号、路径分隔符或者是网络共享名,即:“C”、“C:”、“C:\”及“\\machine\sharename” 

GetDriveName(drivespec) 
用字符串返回drivespec指定的驱动器的名称。drivespec参数必须是文件或文件夹的绝对路径,或者仅仅是驱动器字母,例如:“c:”或“c” 

(2)    与文件夹有关的方法
与文件夹有关的方法如表5-6所示:
表5-6  与文件夹有关的方法及说明
方 法 
说 明 

BuildPath(path,name) 
在已有的路径path上增添名字为name的文件或文件夹,如果需要,则增添路径分隔符’\’ 

CopyFolder(source,destination,overwrite) 
从指定的源文件夹source(可以包含通配符)中复制一个或多个文件夹到指定的目标文件夹destination,包含了源文件夹中的所有文件。如果source包含通配符或destination末尾是路径分隔符(‘\’),那么认为destination是要放置源文件夹的拷贝的文件夹。否则的话,认为destination是要创建的新文件夹的路径名。如果destination文件夹已经存在且overwrite参数设置为False,将产生错误,缺省的overwrite参数是True 

CreateFolder(foldername) 
创建一个路径名为foldername的文件夹。如果foldername已经存在将产生错误 

DeleteFolder(folderspec,force) 
删除由folderspec指定的一个或多个文件夹(可以在路径的最后部分包含通过配符)及文件夹中的所有内容。如果可选的force参数设置为true,那么即使文件夹包含的文件具有只读属性,也将删除该文件夹。缺省的force参数是False 

FolderExist(folderspec) 
如果folderspec指定的文件夹存在则返回True,否则返回False。folderspec参数可以包含文件夹的绝对或相对路径,或者仅仅是当前文件夹中看到的文件夹名 

GetAbsolutePathName(pathspec) 
返回明确指定文件夹的路径,其中要考虑到当前文件夹的路径。例如,如果当前文件夹是“c:\docs\sales\”,而pathspec是“jan”,返回的字符是“c:\docs\sales\jan”。通配符、”..”和”\\”路径操作符都是可以接受的 

GetFolder(folderspec) 
返回folderspec指定的文件夹对应的Folder对象。folderspec可以是文件夹的相对的或绝对的路径 

GetParentFolderName(pathspec) 
返回pathspec文件或文件夹的上一级文件夹。不检验该文件夹是否存在 

GetSpecialfolder(folderspec) 
返回一个特定的Windows文件夹相对应的Folder对象。参数folderspec的允许值是WindowsFolder(0)、SystemFolder(1)和TemporaryFolder(2) 

MoveFolder(source,destination) 
将source指定的一个或多个文件夹移动到destination指定的文件夹。在source里可以包含通配符,但在destination中不行。如果source包含通配符或destination末尾是路径分隔符(‘\’),则认为destination是要放置源文件夹的文件夹,否则认为它是一个新文件夹的完整路径和名字。如果目的文件夹destination已经存在则产生错误 

(3)    与文件有关的方法
与文件有关的方法如表5-7所示:
方 法 
说 明 
CopyFile(source,destination,
overwrite) 
将source(可包含通配符)指定的一个或多个文件复制到指定的目标文件夹destination。如果source包含通配符或destination末尾是路径分隔符(‘\’),那么认为destination是文件夹。否则认为destination为一新文件的完全路径和名称。如果目标文件夹已经存在且overwrite参数设置为False,将产生错误。缺省的overwrite参数是True 

CreateTextFile(filename,overwrite,
unicode) 
用指定的文件名filename在磁盘上创建一个新的文本文件,并返回与其对应的TextStream对象,如果可选的overwrite参数设置为True,则覆盖同一路径下已有的同名文件。缺省的overwrite参数是False。如果可选的unicode参数设置为True,则该文件的内容将存储为Unicode文本,缺省的unicode参数是False 

DeleFile(filespec,force) 
删除由filespec指定的一个或多个文件(可以在路径的最后部分包含通配符)。如果可选的force参数设置为true,那么也删除具有只读属性的文件。缺省的force参数是False 

FileExists(filespec) 
如果filespec指定的文件存在则返回True,否则返回False。filespec参数可以包含文件的绝对路径或相对路径,或者是当前文件夹中的文件名 

GetBaseName(filespec) 
返回filespec指定的文件的名称,即包含文件路径但去掉了文件的扩展名 

GetExtensionName(filespec) 
返回filespec指定的文件的扩展名 

GetFile(filespec) 
返回filespec指定的文件所对应的File对象。可以指定文件的相对或绝对路径 

GetFileName(pathspec) 
返回pathspec指定的文件的路径或文件名,如果没有文件名就返回最后的文件夹名。不检查该文件或文件夹是否存在 

GetTempName() 
返回一个随机产生的文件名,用于完成运算所需的临时文件或文件夹 

MoveFile(source,destination) 
将source指定的一个或多个源文件移动到destination指定的目的文件夹。在source里可以包含通配符,但destination不行。如果source包含通过配符或destination末尾是路径分隔符(‘\’),那么认为destination是一文件夹。否则,认为destination是一新文件夹的完整路径和名称。如果目的文件夹已经存在则产生错误 

OpenTextFile(filename,iomode,create,
    format) 
创建一个名叫做filename的文件,或打开一个现有的名为filename的文件,并且返回一个与其相关的TextStream对象。filename参数可以包含绝对或相对路径。iomode参数指定了所要求的访问类型。允许的数值是ForReading(1)(缺省)、ForWriting(2)、ForAppending(8)。当写入或追加到一个不存在的文件时,如果create参数设置为true,就将创建一个新文件。缺省的create参数是False。format参数说明对文件读或写的数据格式。允许数值是:TristatetFalse(0)(缺省),按照ASCII格式打开;TristatetTrue(-1),按照Unicode格式打开;TristateDefault(-2),用系统缺省格式打开 

       Unicode文件使用两个字节标识每个字符,取消了ASCII字符最多256个的限制。

5.4.2 使用驱动器
       下面是使用FileSystemObject对象的简单例子,它使用DriveExists方法得到现有的驱动器字母的列表:
       ‘ In VBScript
       Set objFSO = Server.CreateObject(“Scripting.FileSystemObject”)
       For intCode = 65 To 90                ‘ANSI codes for ‘A’ to ‘Z’
              strLetter = Chr(intCode)
              If objFSO.DriveExists(strLetter) Then
                     Response.Write “Found drive “ & strLetter & “:<BR>”
              End If
       Next
       或用JScript:
       // In Jscript
       var objFSO = Server.CreateObject(‘Scripting.FileSystemObject’);
       for (var intCode = 65; intCode <= 90; intCode++) {    //ANSI codes for ‘A’ to ‘Z’
              strLetter = String.formCharCode(intCode);
              If (objFSO.DriveExists(strLetter))
                     Response.Write (‘Found drive ‘ + strLetter + “:<BR>”);
       }
       这两个程序段的运行结果是相同的,如图5-9所示:


图5-9  驱动器列表
       这一页面为driveexists_vb.asp,由本书的示例文件提供。
1.  Drive对象
正如已经看到的,FileSystemObject对象包含一个属性——Drives,它返回一个包括本地计算机上所有可用驱动器的集合。
Drives集合里的每个条目是一个Drive对象。Drive对象的属性如表5-8所示:
表5-8  Drive对象的属性及说明
属 性 
说 明 

AvailableSpave 
考虑了帐户定额和/或其他限制,返回驱动器上对于该用户可用的空间的大小 

DriveLetter 
返回驱动器的字母 

DriveType 
返回驱动器的类型。返回值可以是Unknown(0)、Removeable(1)、Fixed(2)、Network(3)、CDRom(4)和RamDisk(5)。然而需要注意的是当前版本的scrrun.dll不支持预定义常数Network,必须使用十进制3来代替 

FileSystem 
返回驱动器文件系统的类型。返回值包括“FAT”、“NTFS”和“CDFS” 

FreeSpace 
返回驱动器上可用剩余空间的总量 

IsReady 
返回一个布尔值表明驱动器是否已准备好 

Path 
返回一个由驱动器字母和冒号组成的驱动器路径,即“C:” 

RootFolder 
返回代表的驱动器根目录文件夹的Folder对象 

SerialNumber 
返回一个用于识别磁盘卷的十进制的序列号 

ShareName 
如果是一个网络驱动器,返回该驱动器的网络共享名 

TotalSize 
返回驱动器的总容量(以字节为单位) 

VolumeName 
设定或返回本地驱动器卷名 

       因此,通过使用Drives集合里的Drive对象,可以在服务器上产生一个驱动器列表,与通过检查每个可能的驱动器字母来判别驱动器是否存在的方法相比,效率更高。我们也可以得到关于该驱动器的信息。在VBScript里,代码如下:
' In VBScript:
' create a FileSystemObject instance
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' create a Drives collection
Set colDrives = objFSO.Drives
' iterate through the Drives collection
For Each objDrive in colDrives

  Response.Write "DriveLetter: <B>" & objDrive.DriveLetter & "</B>&nbsp; &nbsp;"
  Response.Write "DriveType: <B>" & objDrive.DriveType
  Select Case objDrive.DriveType
    Case 0: Response.Write " - (Unknown)"
    Case 1: Response.Write " - (Removable)"
    Case 2: Response.Write " - (Fixed)"
    Case 3: Response.Write " - (Network)"
    Case 4: Response.Write " - (CDRom)"
    Case 5: Response.Write " - (RamDisk)"
  End Select
  Response.Write "</B>&nbsp; &nbsp;"

If objDrive.DriveType = 3 Then
    If objDrive.IsReady Then
      Response.Write "Remote drive with ShareName: <B>" & objDrive.ShareName & "</B>"
    Else
Response.Write "Remote drive - <B>IsReady</B> property returned_
<B>False</B><BR>"
    End If
  Else If objDrive.IsReady then 
    Response.Write "FileSystem: <B>" & objDrive.FileSystem & "</B>&nbsp; &nbsp;"
    Response.Write "SerialNumber: <B>" & objDrive.SerialNumber & "</B><BR>"
Response.Write "Local drive with VolumeName: <B>" & _
objDrive.VolumeName & "</B><BR>"
Response.Write "AvailableSpace: <B>" & FormatNumber( _
objDrive.AvailableSpace / 1024, 0) & "</B> KB&nbsp; &nbsp;"
Response.Write "FreeSpace: <B>" & FormatNumber( _
objDrive.FreeSpace / 1024, 0) & "</B> KB&nbsp; &nbsp;"
Response.Write "TotalSize: <B>" & FormatNumber(_ 
objDrive.TotalSize / 1024, 0) & "</B> KB"
  End if  
  Response.Write "<P>"
  End if
Next
       注意,不能用预定义常数Network比较驱动器的DriveType属性,因为(至少在scrrun.dll的当前版本中)在类型库中省略了Network常数,因此不再作为公用的常数使用。
在JScript中,该程序是:
// In JScript:
// create a FileSystemObject instance
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
// create a Drives collection
var colDrives = new Enumerator(objFSO.Drives);

for (; !colDrives.atEnd(); colDrives.moveNext()) {
  objDrive = colDrives.item();
  Response.Write('DriveLetter: ' + objDrive.DriveLetter + '<BR>');
  Response.Write('DriveType: ' + objDrive.DriveType + '<BR>');

  if (objDrive.DriveType == 3)
    if (objDrive.IsReady) 
      Response.Write('Remote drive with ShareName: ' + 
                     objDrive.ShareName + '<BR>')
    else
      Response.Write('Remote drive - IsReady property returned False<BR><BR>');
    else if (objDrive.IsReady) {
      Response.Write('Local drive with VolumeName: ' + 
                    objDrive.VolumeName + '<BR>');
    Response.Write('FileSystem: ' + objDrive.FileSystem + '<BR>');
    Response.Write('SerialNumber: ' + objDrive.SerialNumber + '<BR>');
    Response.Write('AvailableSpace: ' + objDrive.AvailableSpace + ' bytes<BR>');
    Response.Write('FreeSpace: ' + objDrive.FreeSpace + ' bytes<BR>');
    Response.Write('TotalSize: ' + objDrive.TotalSize + ' bytes<P>');
}
}
       在系统上运行这段程序以前有一点要注意。如果在A驱动器里没有磁盘,或CD-ROM驱动器里没有光盘,将得到一个错误提示:“Disk Not Ready”。除了DriveLetter属性和DriveType属性外,在使用其他属性和方法前,通过检查每个驱动器的IsReady属性,可以保护该页面。
       当在服务器上运行以上VBScript代码时,运行结果如图5-10所示。这一页面为drivescollection_vb.asp,来自本书提供的示例文件。
请问楼上..

  总是执行else后面的东西,不会COPY

fso.FileExists(cf) 这句的值是多少?

急!! 帮兄弟一把,数据库查询判断 sql2000问题,asp.net连接 在存储过程中的SQL语句中如何使用传递的参数? 再次提问关于关键字识别的问题,请高手指点 怎么为表格分配属性? resin 中文问题 大家怎么处理js常量?是不是单独放在一个文件中? 如何取得属性符合特定条件的html元素集合?? 谁能详细说说DCOMCNFG是用来作什么的? 我删除一个view 的时候到底需要作哪些操作。高手抓紧帮忙 还是关于上船的老问题 ,请求大家来帮帮忙 大家来帮忙 在线求助,我做插入一条数据到数据库中,点击刷新按钮后,又增加了一条同样数据,我该如何避免呢 一个B/S(java)开发团队,要多少个人才比较合理! bs结构中怎样实时知道用户退出? 查询新身份证(18位)的校验位的相关问题 access中字段定义为“日期/时间”,VC没有这种格式,怎么办? 关于自动运行的问题? 有谁用过libhttp? 哪有Response.ContentType的所有类型说明??? MTS和COM的问题?专家请进。 我明明把 rstobj.absolutepage的值赋了3 为什么运行时显示 -1 , 非常不解啊! 我怎么发不出去啊,高手们快来啊(抱歉,小人就这么多分了) 一个有关截取字符串的问题? 一个非常简单的问题,textarea滚动问题 powerbuilder8.0数据库问题 百分求一server push(推技术)的例子代码! 在Windows 2000下 SQL server 2000 不能启动? 如何才能给用户呈现一个始终在活动的界面