evinben
Goto Top

Mit VB-Sckript eine Batch-Datei mit mehr als einem Argument auszuführen geht nicht

Hallo,

ich versuche mit einem VB-Sckript eine Batch-Datei mit Argumenten auszuführen. Wenn nur ein Argument übergeben wird, dann wird die Batch-Datei fehlerfrei ausgeführt - so:
 CreateObject("Shell.Application").ShellExecute "D:\Probe1.bat","Arg1 FileName",,"runas",1  

Wenn aber mehr als ein Argument wie folgt übergeben werden
CreateObject("Shell.Application").ShellExecute "D:\Probe1.bat","""Arg1 FileName"" ""Arg2 RunOptions""",,"runas",1  
dann öffnet sich das CMD-Fenster und schließt sich sofort. In der Batch-Datei "D:\Probe1.bat" steht während des Testes nur PAUSE und nichts anders! Also völlig leer.
Auf einem anderen Rechner probiert und das Problem ist dasselbe. Zahlreiche Versuche und Kombinationen mit den Anführungszeichen habe ich in der VBS-Syntax vorgenommen und immer noch kein Erfolg.
Ich habe gelernt, dass in VBS die Anführungszeichen der Argumente verdoppelt werden müssen (und anschließend alle Argumente zusätzlich in Anführungszeichen umrahmen).

Woran kann es liegen?

Gruß
evinben

Content-Key: 188110

Url: https://administrator.de/contentid/188110

Printed on: April 19, 2024 at 07:04 o'clock

Member: rubberman
rubberman Jul 16, 2012 at 18:40:46 (UTC)
Goto Top
Hallo evinben.

Ich hätte jetzt auch nicht gedacht dass es so schwierig sein könnte, aber nach 3 Versuchen so:
CreateObject("Shell.Application").ShellExecute "cmd.exe", " /c """"D:\Probe1.bat"" ""Arg1 FileName"" ""Arg2 RunOptions""""", "", "runas", 1  

Grüße
rubberman
Member: evinben
evinben Jul 16, 2012, updated at Jul 17, 2012 at 06:38:39 (UTC)
Goto Top
Hallo rubberman!

Danke dir vielmals für deine erneute Rettung!
Ich sehe, dass der Aufbau ähnlich ist, wie in dem vorherigen Beitrag mit der „uac.vbs“-Datei von dir. Dennoch wollte ich lieber fragen, da es ja mit einem Argument ohne „cmd.exe“ geht.
Ich werde mir diese Lösung - mit cmd.exe dazwischen - als Standard in meinen Vorlagen abspeichern.

Gruß
evinben
Mitglied: 76109
76109 Jul 16, 2012 updated at 21:59:21 (UTC)
Goto Top
Hallo rubberman!

Hatte mich leider verkucktface-wink

Gruß Dieter
Member: rubberman
rubberman Jul 16, 2012 updated at 23:20:48 (UTC)
Goto Top
Hallo evinben,

ich kann das Verhalten jetzt auch nicht zu 100% nachvollziehen, ich hatte allerdings auch keinen Erfolg den Batch direkt mit den beiden Argumenten aufzurufen.
Die zig Anführungszeichen machen das Lesen nun nicht gerade einfacher, darum vielleicht noch eine kleine Interpretationshilfe. Wenn du die von dir zitierte Regel mit Strings und Anführungszeichen mal umgekehrt anwendest (also umschließende Anführungszeichen entfernen und verdoppelte zu einfachen reduzieren), dann kommst du letztlich zu einer Kommandozeile, die wie folgt aussieht:
cmd.exe /c ""D:\Probe1.bat" "Arg1 FileName" "Arg2 RunOptions""
Das heißt, der gesamte Ausdruck ist in Anführungszeichen gefasst und die einzelnen Argumente nochmals extra, da sie Leerzeichen enthalten oder enthalten könnten.

Grüße
rubberman