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 行目でステートメントの予期された終了というエラーが表示されるためです。

これが私の更新されたコードです:

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 によって 1 つの方法がすでに提案されています。

strFolder = fso.GetFolder(".").Path

他の人は

strFolder = fso.GetAbsolutePathName(".")

またはCurrentDirectorythWshShellオブジェクトのメソッド

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 に答える