0

我可以复制,但我不知道要放什么来获取当前目录,所以文件在哪里并不重要,但它会复制它。代码将是这样的:

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 行收到错误 Expected end of statement 。

这是我更新的代码:

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
4

1 回答 1

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)
于 2012-09-16T17:28:38.503 回答