新手学习,问题初浅,望海涵。1、程序目的
复制指定目录下的所有匹配文件,并粘贴到指定目录。
2、陈述2-2、VBScript参考手册--“VBScript 运行时库参考”--“方法”--“CopyFile方法”。
文中提到其语法为:"object.CopyFile source, destination[, overwrite]",其中"object"为必选项,且应为FileSystemObject 对象的名称。2-3、已尝试程序
Dim fso
Set fso=CreatObject("Scripting.FileSystemObject")
fso.CopyFile("C:\123\*.doc","C:\321\")
运行结果:doc文件未能被成功复制
在网上查找,有朋友说应该把括号去掉,测试后依然不行。
劳驾各位前辈指点指点,谢谢!

解决方案 »

  1.   

    fso.CopyFile("C:\123\*.doc","C:\321\") 改成fso.CopyFile("C:\123\123.doc","C:\321\321.doc") 
      

  2.   

    COPYFILE貌似只能一个一个复制文件.要用通配符,就使用DIR()函数得到目标文件列表(DIR支持通配符),再一个一个用COPYFILE复制.不然就直接调用命令行的Copy命令.
      

  3.   

    shell "cmd.exe /c copy C:\123\*.doc,C:\321\" 
      

  4.   

    Private Sub Command1_Click()
       Set fs = CreateObject("Scripting.FileSystemObject")
       fs.CopyFile "c:\123\*.doc", "c:\321", True  '自己建一个 c:\321文件夹
       Set fs = Nothing
       MsgBox "OK"
    End Sub
      

  5.   

    虽然问题目前没有得到解决,但是必须感谢楼上几位的耐心回答,现将鄙人的全部想法总结如下,望共同探讨。依照《VBS参考手册》。
    "COPY"方法的格式为:"object.Copy destination[, overwrite] "。其中"object"项必须是File或者Folder对象的名称,而通过GetFile可以获得所需要的File对象名称。"CopyFile"方法中也需要"object",但与"Copy"方法不一样的是,其"object"项目应为FileSystemObject对象的名称。根据《手册》中"CreatFolder"方法给出的示例,可以通过例如"Set fso=CreatObject("Scripting.FileSystemFile")"获得名称为"fso"的"FileSystemObject"对象。另外,在《手册》中对"CopyFile"的描述是:将一个或多个文件从某位置复制到另一位置,并明确说明可以在source参数的路径最后一个组成部分中使用通配符。(其语法为object.CopyFile source, destination[, overwrite] )
    通过实验证明以下程序执行无误
    Dim fso ,f
    Set fso = CreatObject("Scripting.FileSystemObject")
    Set f = fso.GetFile("C:\123\123.doc")
    f.copy("C:\321\321.doc")同时实验证明以下程序执行无效
    Dim fso 
    Set fso=CreatObject("Scripting.FileSystemObject") 
    fso.CopyFile("C:\123\*.doc","C:\321\") 鄙人以为,在实验1中,f为通过GetFile获得了对象故称为“有效的对象的名称”。但是令人费解的是,在对GetFile的说明中提到,其Object项目是FileSystemObject的名称,与"CopyFile"方法的差距仅在“对象”一词上。
    如果CreatObject只是定义了一个FileSystemObject名称的话,那么应该如何使这个名称成为一个有效的“对象的名称”呢?
      

  6.   

    用fso穷举所有该目录下*.doc 文件,然后单个拷贝即可。Set fso=CreatObject("Scripting.FileSystemObject") 
    Set Folder1 = fso.GetFolder("c:\123\")
    For Each File1 In Folder1.Files
        If lcase(right(File1.Name,4)) <> ".doc" Then
        fso.CopyFile("C:\123\"& File1.Name,"C:\321\" & File1.Name)  
    Next
     
     
      

  7.   

    循环copy并不比整体copy的效率差多少,如果让俺来做,俺会用最简单的想法,循环+copy,好控制,易修正。