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 未按预期执行的主要内容,如果未能解决你的问题,请参考以下文章