我可以复制,但我不知道要获取当前目录的内容,因此无论文件位于何处都可以复制它。代码将是这样的:
Set fso = CreateObject("Scripting.FileSystemObject")
strFolder = fso.GetParentFolderName(WScript.ScriptFullName)
Const DestinationFile = "C:\Users\John\Foldar\output.vbs"
Const SourceFile = "fso.BuildPath (strFolder, "getty.vbs")"
If fso.FileExists(DestinationFile) Then
If Not fso.GetFile(DestinationFile).Attributes And 1 Then
fso.CopyFile SourceFile, "C:\Users\John\AnyFile\", True
Else
fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes - 1
fso.CopyFile SourceFile, "C:\Users\John\AnyFile\", True
fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes + 1
End If
Else
fso.CopyFile SourceFile, "C:\Users\John\AnyFile\", True
End If
Set fso = Nothing
我需要的是:
Const SourceFile = "currentplace\something.vbs"
或类似的东西。因为我在第4行char 48获得了错误预期的语句结束。
这是我更新的代码:
Set fso = CreateObject("Scripting.FileSystemObject")
strFolder = fso.GetFolder(".").Path
DestinationFile = "C:\Test\getty.vbs"
SourceFile = fso.BuildPath(dir, getty.vbs)
If fso.FileExists(DestinationFile) Then
If Not fso.GetFile(DestinationFile).Attributes And 1 Then
fso.CopyFile SourceFile, "C:\Test\", True
Else
fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes - 1
fso.CopyFile SourceFile, "C:\Test\", True
fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes + 1
End If
Else
fso.CopyFile SourceFile, "C:\Test\", True
End If
Set fso = Nothing
答案 0 :(得分:0)
GetParentFolderName(WScript.ScriptFullName)
返回包含脚本解释器的文件夹的名称。那可能是也可能不是当前的工作目录。如果您需要工作目录,请不使用此方法。
有几种方法可以确定实际的工作目录。 @Jay已经提出了一种方法:
strFolder = fso.GetFolder(".").Path
其他人会
strFolder = fso.GetAbsolutePathName(".")
或CurrentDirectory
对象的WshShell
方法
strFolder = CreateObject("WScript.Shell").CurrentDirectory
编辑:至于您获得的错误,Const
仅适用于文字,即您无法执行类似
Const foo = fso.BuildPath(dir, filename)
甚至是
之类的东西Const foo = 23 + 42
没有计算,没有函数/方法调用,没有字符串连接,没有。只有文字常量:
Const foo = "something"
Const bar = 23
如果要分配方法调用的结果,必须使用变量:
foo = fso.BuildPath(dir, filename)