vbscript无法按预期执行

时间:2015-08-28 10:03:11

标签: vbscript windows-xp

我在过去几天一直在谷歌搜索解决我的问题。 关于这个话题似乎有很多问题,但不知何故他们不适合我或(很可能)我会做错事。

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函数。如果它不存在我将它写入文件。

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

我已经检查了原始目标文件和目标文件上的属性,因为根据谷歌的说法,只读属性会阻止文件被复制,即使在复制功能中也是如此。#34;覆盖"设置为TRUE。

所以我现在不知道在哪里看,非常感谢任何帮助。

由于 菲利普

1 个答案:

答案 0 :(得分:1)

我会继续将此作为答案而不是评论发布,因为我非常确定这是导致您出现问题的原因。

SUP>

在您尝试复制的行中,您有

FileSystemObject.CopyFile [...]

但是,您在任何时候都没有定义变量,更不用说名为FileSystemObject的对象了。您的文件系统对象实际上定义为

Set FSO = CreateObject("Scripting.FileSystemObject")

那是FSO,而不是FileSystemObject。尝试将CopyFile行更改为:

FSO.CopyFile strFileName, strCopyTo, True

如果您使用<%Option Explicit%>启动代码,则解释器(&#34;编译器&#34;)会为您捕获这些类型的错误。