.vbs Datei vom aktuellen Ort zu einem anderen kopieren

  • VBScript

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ghe89h.

    .vbs Datei vom aktuellen Ort zu einem anderen kopieren

    Hallo,

    wie kann ich eine Datei vom aktuellen (von dort aus, von wo ich diesen Script ausführe) in einen anderen Ordner kopieren?

    Ich habe es so ausprobiert, aber da muss ein Fehler sein:

    Visual Basic-Quellcode

    1. Dim sourcePath
    2. sourcePath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
    3. Dim fso
    4. Set fso = CreateObject("Scripting.FileSystemObject")
    5. fso.CopyFile "sourcePath&(PathTest.txt)", "C:Users\NonAdmin\Downloads\"


    Schöne Grüße,

    Dani
    Die Häkchen stimmen nicht.

    Quellcode

    1. if right$(sourcePath ,1) <> "\" then
    2. sourcePath = sourcePath & "\"
    3. endif
    4. fso.CopyFile sourcePath & "PathTest.txt"

    'In den Häkchen bei der IF-Abfrage gehört ein Backslash. Der fehlt aber hinterher wieder :( Deshalb Code nicht auf vb gestellt...
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Ich danke dir sehr für deine Hilfe.
    Welche Häkchen stimmen nicht?

    Ich hänge grade an der ________

    Visual Basic-Quellcode

    1. Dim sourePath
    2. Dim fso
    3. Set fso = CreateObject("Scripting.FileSystemObject")
    4. sourcePath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, ""))
    5. if right$(sourcePath ,1) <> "C:Users\NonAdmin\Downloads\" then
    6. sourcePath = sourcePath & "\"
    7. endif
    8. fso.CopyFile "sourcePath&(PathTest.txt)\", "C:Users\NonAdmin\Downloads\"

    ?
    Bei mir Zeile 4 genauer ansehen.

    Du setzt in Zeile 10 sourcePath in Klammern. So sucht er den Pfad sourcePath und nicht nach dem in der Variable stehenden Wert. Vor und nach einem & muss je eine Leerstelle sein. Meine Zeilen 1 bis 3 braucht es eigentlich nicht, da Du in Zeile 4 ja den Backslash behältst. Leider verschluckt der Code-Anzeiger hier die Backslashs. So habe ich den nicht gleich entdeckt :) Andererseits schaden die 3 Zeilen auch nicht...
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hey ghe89h,
    zunächst zur Zeile 5 Deines ersten Posts:
    Nicht so:

    VB.NET-Quellcode

    1. fso.CopyFile "sourcePath&(PathTest.txt)", "C:Users\NonAdmin\Downloads\"

    sondern so:

    VB.NET-Quellcode

    1. fso.CopyFile(sourcePath & "PathTest.txt", "C:\Users\NonAdmin\Downloads\")

    Des Weiteren hat peterfido schon recht, indem er eine 'BackSlash-Prüfung' empfiehlt;
    allerdings schreibt man sie in vb.Net jetzt so:
    (Im Code ...<> "\" gehört ein BackSlash rein - ich weiß nicht, warum er nicht angezeigt wird ?( ?)

    VB.NET-Quellcode

    1. if sourcePath.Substring(sourcePath.Length -1 ,1) <> "\" then sourcePath &= "\"

    Weiterhin, warum nicht Deinen ganzen Code ersetzen (auf Deine Pfade angepasst) durch:
    ("Import Microsoft.VisualBasic.FileSystem" oder "Import My.Computer.FileSystem" nicht vergessen!)

    VB.NET-Quellcode

    1. FileCopy("C:\Windows\notepad.exe", "C:\Programme\_MyNotepad.exe")


    Allerdings gibt es jetzt bei der ganzen Sache noch einen Haken!
    Ab Windows Vista oder 7 und 8 sind die Pfade auf der Festplatte C:\ nicht mehr unbedingt zu
    erreichen, da Windows im Hintergrund andere Verzeichnisnamen benutzt als die, die Du im
    Explorer sehen kannst - so heißt z.B. der Ordner "Programme" windowsintern "Programm Files".
    Sprichst Du also das Verzeichnis unter "C:\Programme\" an, dann wirst Du die Fehlermeldung
    'Ein Teil des Pfades "C:\Programme\" konnte nicht gefunden werden.' erhalten und beim Aufruf
    einer Datei in diesem Verzeichnis wird der Fehler 'Der Zugriff auf den Pfad "C:\Programme\Test.txt"
    wurde verweigert.' generiert. Das Ganze ist ein umfangreiches Thema, in das Du Dich an anderer
    Stelle einlesen müsstest!
    Hast Du allerdings weitere Festplatten angeschlossen, so müsste dort der Zugriff auf Verzeichnisse
    und Dateien problemlos funktionieren.
    mfG DHB

    Ich meine:
    :P Es sollten nur ernstzunehmende Beiträge eingestellt werden!
    :( Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
    ;) Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
    8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „DHB“ ()

    @peterfido
    Sollte auch keine Kritik sein, ist halt bloß ein besserer Stil ;)
    mfG DHB

    Ich meine:
    :P Es sollten nur ernstzunehmende Beiträge eingestellt werden!
    :( Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
    ;) Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
    8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.
    Vielen Dank für eure Hilfe.
    Die Datei lässt sich nun so kopieren:

    Visual Basic-Quellcode

    1. Dim folderName
    2. folderName = "."
    3. Dim fso
    4. Set fso = CreateObject("Scripting.FileSystemObject")
    5. Dim fullpath
    6. fullpath = fso.GetAbsolutePathName(folderName)
    7. If fso.FileExists(fullpath & "\PathTest.txt") Then
    8. fso.copyFile fullpath & "\PathTest.txt", "C:\Users\NonAdmin\Downloads\", True
    9. Else
    10. MsgBox "PathTest.txt doesn't exists here."
    11. End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ghe89h“ ()