vbscript 未按预期执行

Posted

技术标签:

【中文标题】vbscript 未按预期执行【英文标题】:vbscript does not execute as desired 【发布时间】:2015-08-28 10:03:11 【问题描述】:

过去几天我一直在谷歌上搜索我的问题的解决方案。 似乎有很多关于这个主题的问题,但不知何故它们对我不起作用,或者(很可能)我会做错事。

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

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

我已经检查了源文件和目标文件的属性,根据谷歌的说法,即使在复制功能“覆盖”设置为 TRUE 时,只读属性也会阻止文件被复制。

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

谢谢 菲利普

【问题讨论】:

我不知道这是否是实际问题,但在您尝试进行复制的行中,您引用了对象FileSystemObject。问题是,当你创建你的对象时,你没有把它叫做FileSystemObject;你称它为FSO。尝试打开Option Explicit 以避免此类问题。 【参考方案1】:

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

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

FileSystemObject.CopyFile [...]

然而,你从来没有定义一个变量,更不用说一个名为FileSystemObject的对象了。您的文件系统对象实际上定义为

Set FSO = CreateObject("Scripting.FileSystemObject")

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

FSO.CopyFile strFileName, strCopyTo, True

如果您以<%Option Explicit%> 开始您的代码,解释器(“编译器”)会为您捕获这些类型的错误。

【讨论】:

谢谢玛莎:很容易修复,但根本看不到它,可能是看代码太多,并尝试了许多没有解决问题的事情。 (无法通过三分之二看到树林;荷兰人说... @Philippe:“只见树木不见森林”也是英语谚语。 :)

以上是关于vbscript 未按预期执行的主要内容,如果未能解决你的问题,请参考以下文章

VBScript 上的错误处理:不抛出错误

如何成功执行vbscript?

VBScript 执行和评估命令

VBScript执行成功后如何关闭CMD提示窗口

如何在执行期间保持 VBScript 命令窗口打开

vbscript 数据库执行标量