VBSrcipt wscript.shell.run mit relativer Pfadangabe und Parameterübergabe ausführen
Hallo,
ich habe eine HTML Anwendung (hta) geschrieben in der ich ein VBScript über einen Button aufrufe.
Meine Anwendung befindet sich im Verzeichnis: d:/a/b/xx/yy/Anwendung.hta
Mit dem VBS-Teil möchte ich dann eine .bat ausführen und dabei den Pfad relativ angeben sowie einen Parameter übergeben.
bisher habe ich es, mit absoluten Pfad, so:
Das oben habe ich irgendwo mal gefunden - kann aber leider nicht mehr angeben wo...
Die Syntax für Shell.Run lautet normal:
RückgabeWert = Shell.Run(Befehl, FensterTyp, warten)
nun möchte ich eben als Befehl die Batch ausführen indem ich einen relativen Pfad verwende und eben noch den Parameter übergeben.
Finde die bisherige Methode auch etwas verwirrend wegen den ganzen "-Zeichen da würde mir die andere Variante auch besser gefallen!
Relative Pfadangabe:
in einer batch kann man das ja mit ../ realisieren.
Das Funktioniert so aber nicht. Bekomme die Fehlermeldung das die Datei nicht gefunden wird.
Und würde, wie bereits erwähnt, auch die andere Variante mit Return = Shell.Run () bevorzugen.
Danke
Gruß eldorado
ich habe eine HTML Anwendung (hta) geschrieben in der ich ein VBScript über einen Button aufrufe.
Meine Anwendung befindet sich im Verzeichnis: d:/a/b/xx/yy/Anwendung.hta
Mit dem VBS-Teil möchte ich dann eine .bat ausführen und dabei den Pfad relativ angeben sowie einen Parameter übergeben.
bisher habe ich es, mit absoluten Pfad, so:
Set Shell = createobject("wscript.shell")
shell.run """d:/a/b/c/d/MeineBatch.bat"", "& Parameter &", true"
Das oben habe ich irgendwo mal gefunden - kann aber leider nicht mehr angeben wo...
Die Syntax für Shell.Run lautet normal:
RückgabeWert = Shell.Run(Befehl, FensterTyp, warten)
nun möchte ich eben als Befehl die Batch ausführen indem ich einen relativen Pfad verwende und eben noch den Parameter übergeben.
Finde die bisherige Methode auch etwas verwirrend wegen den ganzen "-Zeichen da würde mir die andere Variante auch besser gefallen!
Relative Pfadangabe:
in einer batch kann man das ja mit ../ realisieren.
Set Shell = createobject("wscript.shell")
shell.run """../../b/c/d/MeineBatch.bat"", "& Parameter &", true"
Das Funktioniert so aber nicht. Bekomme die Fehlermeldung das die Datei nicht gefunden wird.
Und würde, wie bereits erwähnt, auch die andere Variante mit Return = Shell.Run () bevorzugen.
Danke
Gruß eldorado
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 280608
Url: https://administrator.de/forum/vbsrcipt-wscript-shell-run-mit-relativer-pfadangabe-und-parameteruebergabe-ausfuehren-280608.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
13 Kommentare
Neuester Kommentar
Moin,
Das macht das gewünschte ..
Die Anführungszeichen um den Batchpfad brauchst du wenn du Leerzeichen in deinem Pfad oder dem Dateinamen der Batch hast.
Zur Info: Um Einfache Anführungszeichen innerhalb einer Zeichenfolge zu erzeugen sind sie innerhalb des Strings zu verdoppeln, deswegen sind es für ein einzelnes Anführungszeichen insgesamt derer 4. Und nicht das Leerzeichen hinter dem Batchnamen vergessen, siehst du ja in Zeile 4...
Gruß jodel32
fso.GetParentFolderName("wscript.ScriptFullName")
das kann ja so nicht funktionieren, wenn du eine Funktion in Anführungszeichen kapselst Das macht das gewünschte ..
Set objShell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.Filesystemobject")
strPathBatch = fso.GetParentFolderName(WScript.ScriptFullName) & "\DeineBatch.bat"
objShell.Run """" & strPathBatch & """ " & Parameter,0,True
Zur Info: Um Einfache Anführungszeichen innerhalb einer Zeichenfolge zu erzeugen sind sie innerhalb des Strings zu verdoppeln, deswegen sind es für ein einzelnes Anführungszeichen insgesamt derer 4. Und nicht das Leerzeichen hinter dem Batchnamen vergessen, siehst du ja in Zeile 4...
Gruß jodel32
Ach das ist ja ne HTA ... dann muss das natürlich anders lauten:
Set objShell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.Filesystemobject")
strHtmlPath = document.location.href
Set objThisFile = fso.GetFile(UnEscape(Replace(Right(strHtmlPath, Len(strHtmlPath) - 8), "/", "\")))
strPathBatch = objThisFile.ParentFolder & "\DeineBatch.bat"
objShell.Run """" & strPathBatch & """ " & Parameter,0,True
ich weiß nicht ob ich jetzt irgendwo einen Denkfehler habe oder einfach nicht verstehe.
Das weißt nur du ... zisch dir erst mal einen Kaffee Zitat von @eldorado1:
Wenn ich das jetzt ausführe bekomme ich das Verzeichnis in dem sich meine .hta befindet oder?
Korrekt !Wenn ich das jetzt ausführe bekomme ich das Verzeichnis in dem sich meine .hta befindet oder?
Rischtisch ! Du kannst die Aufrufe auch gleich direkt hintereinander hängen, das kommt auf das selbe raus:
https://msdn.microsoft.com/en-us/library/dt64ftxb%28v=vs.84%29.aspx
objThisFile.ParentFolder.ParentFolder.ParentFolder