VB-Script funktioniert nicht innerhalb einer Batch-Datei

  • VBScript

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Berater90.

    VB-Script funktioniert nicht innerhalb einer Batch-Datei

    Hallo Zusammen,

    ich habe folgendes Problem und hoffe, dass mir hier jemand helfen kann. Ich bin sehr dankbar für jeden Tipp.

    1. Da es in der Eingabeaufforderung von Windows kein Program zum herunterladen von Dateien aus dem Internet gibt, habe ich folgendes Script zusammen gepuzzelt.

    Visual Basic-Quellcode

    1. ' Deklariere und definire Variablen
    2. Set objArgs = Wscript.Arguments
    3. Dim arrayURL, strFileName
    4. ' Downloadlink ergibt sich aus dem ersten Parameter
    5. strFileURL = objArgs(0)
    6. ' URL wird zerteilt und in ein Array geschrieben
    7. arrayURL = Split(strFileURL, "/", -1, 1)
    8. ' Letzter Arrayplatz wird als Dateiname festgelegt
    9. strFileName = arrayURL(UBound(arrayURL))
    10. Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    11. objXMLHTTP.open "GET", strFileURL, false
    12. objXMLHTTP.send()
    13. If objXMLHTTP.Status = 200 Then
    14. Set objADOStream = CreateObject("ADODB.Stream")
    15. objADOStream.Open
    16. objADOStream.Type = 1 'adTypeBinary
    17. ' Downloadpfad wird festgelegt
    18. strHDLocation = "C:\temp\" + strFileName
    19. objADOStream.Write objXMLHTTP.ResponseBody
    20. objADOStream.Position = 0 'Set the stream position to the start
    21. Set objFSO = Createobject("Scripting.FileSystemObject")
    22. If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
    23. Set objFSO = Nothing
    24. ' Speichere Downloadstream im definierten Verzeichnis
    25. objADOStream.SaveToFile strHDLocation
    26. objADOStream.Close
    27. Set objADOStream = Nothing
    28. End if
    29. Set objXMLHTTP = Nothing


    2. Das Script funktioniert einwandfrei mit folgendem Aufruf in einer Eingabeaufforderung (ohne Adminrechte):

    cscript wget.vbs leo.org

    Die HTML-Datei von Leo.org wird heruntergeladen. Wenn man die URL einer anderen Datei angibt, wird diese mit diesem Script heruntergeladen.

    Ausgabe:

    Quellcode

    1. C:\temp>cscript wget.vbs http://www.leo.org
    2. Microsoft (R) Windows Script Host, Version 5.8
    3. Copyright (C) Microsoft Corporation 1996-2001. Alle Rechte vorbehalten.
    4. http://www.leo.org
    5. C:\temp>

    3. Wenn ich jedoch mit Notepadd++ eine Batch-Datei anlege und den Aufrufs des Scripts von dort starte, funktioniert es nicht. Es erscheint nur folgende Ausgabe der Eingabeaufforderung. Die zu herunterladene Datei ist nicht vorhanden.

    Quellcode

    1. Microsoft (R) Windows Script Host, Version 5.8
    2. Copyright (C) Microsoft Corporation 1996-2001. Alle Rechte vorbehalten.


    Folgende Einstellungen habe ich mit dem Script bereits probiert:

    A. Administratorrechte
    B. cmd.exe /C CScript //H:CScript
    C. cscript //H:cscript
    D. cscript //H:cscript wget.vbs leo.org
    E. Verzeichniswechsel mit C: ... cd temp
    F. cscript C:\temp\wget.vbs leo.org


    Hat noch jemand eine Idee, was ich wo einstellen muss, damit ich VB-Scripte in einer Batchdatei ausführen kann?

    Vielen Dank im Voraus! :) :)
    Ich kann mir nich vorstellen das es mit:
    cscript wget.vbs leo.org

    geht.
    Wenn dann zB
    cscript "wget.vbs" "http://www.leo.org"
    pause

    Schreib das mal in eine CallIt.cmd Datei und starte sie. Sie muss in dem Fall im gleichen Verzeichnis wie die VBS Datei liegen
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo Mono,

    danke für die Antwort.

    Ich habe "http://www.leo.org" geschrieben. Die Automatikfunktion hat das leo.org generiert. :) :)

    Mit dem Befehl

    Quellcode

    1. cscript "wget.vbs" "http://www.leo.org"
    2. pause


    in der Batch-Datei funktioniert es.

    Ich habe dabei herausgefunden, dass das Problem, welches ich vorher hatte am VB-Script liegen muss. Es lädt nicht alle Streams herunter. Mit "http://www.leo.org" oder "http://mobaxterm.mobatek.net/MobaXterm_v8.3.zip" und einigen anderen Webseiten habe ich es jedoch erfolgreich getestet.

    Bei Dateien von unserem Fileserver funktioniert es mit dem Batchscript jedoch nicht. Ich muss jetzt mal schauen, warum das so ist.

    VG :)
    Hallo Zusammen,

    ich habe die Ursache meines Problems gefunden und möchte diese hier abschließend noch mal mitteilen. :) :)

    - Ob die Endung der Batch-Datei CMD oder BAT besitzt, ist in meinen Tests nicht relevant gewesen. Beides funktionierte.
    - Ich hatte in den sehr langen Hyperlinks unseres Fileservers die Prozentzeichen übersehen. In den Batch-Dateien wurden die Prozentzeichen dann selbstverständlich entfernt, da diese als Syntax für Variablen erkannt werden. Ein weiteres Prozentzeichen hat das Problem dann behoben. Somit konnte ich mit dem obigen VB-Skript uneingeschränkt Dateien per Batch-Datei herunterladen.

    Viele Grüße
    Berater