PDA

View Full Version : Script --> Aufruf über STRPCCMD



sonicreducer
19-04-16, 12:02
Hallo,

ich möchte via STRPCCMD ein Scipt samt Parameter aufrufen. Als Parameter soll ein Pfad übergeben werden. Dieser Pfad ist allerdings mit Leerzeichen und die Übergabe funktioniert nicht.
set fs=createobject("wscript.shell")
set ag=wscript.arguments
fs.run ag(0), 1

diesen script möchte ich dann mit Parameter aufrufen:

test.vbs "c:\das ist ein Test\Start Programm.exe -par1 -par2 -par3"

Kann mir hier wer helfen?

LG,
Roman

Fuerchau
19-04-16, 12:38
test.vbs "c:\das ist ein Test\Start Programm.exe" "-par1" "-par2" "-par3"
Dann kann die vbs-Runtime jeweils 1 Parameter daraus machen.

Bedenke aber folgendes:
Die Gesamtlänge des PC-Befehls darf 123 (leider) nicht unterschreiten.

sonicreducer
19-04-16, 13:12
funktioniert leider schon nicht wenn ich nur den Programmaufruf mitschicken:

test.vbs "c:\das ist ein Test\Start Programm.exe"

ergibt bereits einen Fehler

Fuerchau
19-04-16, 13:24
und welchen denn nun?

sonicreducer
19-04-16, 13:43
Fehler: Das System kann die angegebene Datei nicht finden.
Code: 800700002
Quelle: (null)

Fuerchau
19-04-16, 14:01
Nunja, das zu übergebende Kommando muss dann auch wieder in Anführungsstriche gepackt werden.
Der 1. Commandprocessor entfernt die Anführungszeichen also musst du diese verdoppeln:
test.vbs """c:\das ist ein Test\Start Programm.exe"" ""-par1"" ""-par2"" ""-par3"""

ggf. wird es übersichtlicher wenn du Hochkommata verwendest (fast gleichwertig), allerdings musst du diese auf der AS/400 verdoppeln.

STRPCCMD PCCMD('test.vbs ''"c:\das ist ein Test\Start Programm.exe" "-p1" "-p2"''')

Es ist etwas schwierig zu erklären.
Die äußeren HK's sind für das AS/400 Kommando, deshalb müssen die inneren HK's verdoppelt werden.
Der PC-Commandprozessor wertet nun die Anfürungszeichen des übergebenen Strings aus und teilt diese dann wieder in Argumete wobei das 1. Argument das aufzurufende Programm ist.

Du kannst das natürlich auch im VBS machen und das Kommando an hand der übergebenen Parameter dann zusammenstoppeln.

Soweit ich allerdings in Erinnerung habe ist das ag(0) das eigene Programm.