2017-12-12 3 views
0

Ich versuche, einen SAS-Code mit VBScript über die Befehlszeile auszuführen. Ich habe jedoch Probleme mit der richtigen Übergabe der Befehle von VBScript an die Befehlszeile. Ich bin mir ziemlich sicher, dass es eine Frage von Anführungszeichen und chr(34) richtig ist, aber ich kann es nicht herausfinden.Cmd-Befehle mit Leerzeichen aus VBscript

Deshalb mag ich den folgt Befehl in der Befehlszeile auszuführen:

"C:\Program Files\SAS 9.4\sas.exe" -SYSIN "C:\Program Files\test.sas" 

Ich habe versucht, so etwas wie

Set oShell = WScript.CreateObject ("WScript.Shell") 
oShell.run "cmd.exe /K copy ""C:\Program Files\SAS 9.4\sas.exe"" -SYSIN ""C:\Program Files\test.sas"" ", 1, True 
Set oShell = Nothing 

Aber ich erhalte einen ungültigen Syntaxfehler in der Befehlszeile. Irgendwelche guten Ideen?

Antwort

1

CMD /K erwartet ein einzelnes Argument. Wenn das Argument Leerzeichen enthält, muss das Argument in Anführungszeichen gesetzt werden. Also das volle Kommando wäre so etwas wie:

oShell.run "cmd.exe /K "" ""C:\Program Files\SAS 9.4\sas.exe"" -SYSIN ""C:\Program Files\test.sas"" "" ", 1, True 

Normalerweise würde man zu geschachtelten zitieren/Fluchten kümmern müssen, aber der/C und/K Schalter sind spezielle, wie Anführungszeichen arbeiten (CMD /? erklärt die Details). Wenn es wie ein einzelnes Argument in Anführungszeichen aussieht, werden alle darin enthaltenen Anführungszeichen automatisch von CMD ignoriert.

+0

Oh yeah Ich war verwirrt von dem Versuch, google. Der Befehl, den ich ausführen möchte, ist also nur 'oShell.run" cmd.exe/K ""^"" C: \ Programme \ SAS 9.4 \ sas.exe^"" -SYSIN^"" C: \ Program Files \ test.sas^"" "" ", 1, True" Da dies die Datei test.sas in der Befehlszeile ausführen sollte. Das obige funktioniert jedoch nicht. Ich bekomme einen Fehler mit 'C: \ Program ' ' was ich denke, die Quotierung ist nicht funktioniert: -/ – user112110

+0

Ah, meine Entschuldigung, ich habe es falsch selbst. 'CMD/K' hat spezielle Verhalten in Bezug auf Zitate, das nirgendwo anders in CMD zu sehen ist und das ich vergessen habe. Ich habe die ursprüngliche Antwort korrigiert. –

+0

Funktioniert wie ein Zauber. Vielen Dank - jetzt wird meine Arbeit viel einfacher ;-) – user112110

Verwandte Themen