复制文件并同时获取文件的位置VBS

时间:2012-09-16 02:39:45

标签: file vbscript get copy location

我可以复制,但我不知道要获取当前目录的内容,因此无论文件位于何处都可以复制它。代码将是这样的:

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

1 个答案:

答案 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)