2015-08-28 15 views
0

我一直在Google上搜索最近几天的问题解决方案。 似乎有很多关于这个话题的问题,但不知何故,他们不适合我或(很可能)我会做错事。vbscript不能按需要执行

Const OverwriteExisting = True 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 

Dim FSO, MyFile, FileName, strFileName, strCopyTo 

Set FSO = CreateObject("Scripting.FileSystemObject") 

strFileName = "C:\......SourceFolder\SourceFile.html" 
strCopyTo = "T:\....DestinationFolder\" 
FileName = "T:\........\autorun.inf" 

If FSO.FileExists(strFileName) Then   
      FileSystemObject.CopyFile strFileName, strCopyTo, True 
      'FSO.CopyFile strFileName, strCopyTo, OverwriteExisting 
     Else 
      For i = 1 to 3 

       If FSO.FileExists(strFileName) Then 
         FileSystemObject.CopyFile strFileName, strCopyTo, True 
        else 
        WScript.sleep 1000 '1000 milliseconds 
       End if 


        Set MyFile = FSO.OpenTextFile(FileName, ForAppending, True, TristateTrue) 

        ' Write to the file. 
        MyFile.WriteLine "Attempt " & i & " - " & Now 
        MyFile.Close 
      Next 
End If 

我想要做的就是复制从位于C上的源文件夹一个文件:\到称为T共享网络驱动器:。 因此,我开始检查脚本是否存在文件,如果它存在,它将不得不将它复制到目标文件夹。 如果不是,我想再尝试3次,每次至少1秒钟。为此我使用FOR方法和WScript.sleep函数。如果它不存在,我将它写入一个文件。

一切工作正常,除了最重要的事情,该文件即使它确实存在它不会被复制。

我已经检查过源和目标文件上的属性,因为根据google,只读属性会阻止文件被复制,即使在复制功能“覆盖”设置为TRUE时也是如此。

所以我不知道现在在哪里看,并将不胜感激任何帮助。

感谢 菲利普

+1

我不知道这是否是实际问题,但在您尝试复制的行中,您引用了对象'FileSystemObject'。问题是,当你创建你的对象时,你没有把它叫做'FileSystemObject';你称它为'FSO'。尝试打开'Option Explicit'来避免这些问题。 – Martha

回答

1

我要继续前进,并张贴此作为一个答案,而不是评论,因为我敢肯定,这是什么导致你的问题。

在你试图做复印的线,你有

FileSystemObject.CopyFile [...] 

然而,在任何时候,你定义一个变量,更不用说一个对象,名叫FileSystemObject。你的文件系统对象实际上是定义为

Set FSO = CreateObject("Scripting.FileSystemObject") 

FSO,不FileSystemObject。试着改变你的CopyFile行:

FSO.CopyFile strFileName, strCopyTo, True 

如果用<%Option Explicit%>开始你的代码,解释(“编译”)将捕获这些类型的错误你。

+0

感谢玛莎:简单的解决方法,但根本看不到它,可能是太多的代码,并尝试了很多没有解决它们的问题。 (看不到三分之二的树林;荷兰人说... – Philippe

+0

@Philippe:“看不到树林”也是英文的说法:) – Martha