Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Visual Basic Script Programm mit Parameter öffnen

Frage Entwicklung Visual Studio

Mitglied: 0cool

0cool (Level 2) - Jetzt verbinden

16.06.2011 um 12:41 Uhr, 9556 Aufrufe, 19 Kommentare

Hallo Leute,

ich bin dabei ein Script zu schreiben, mit dem ich mehrere Programme öffne. Das klappt auch soweit ganz gut, bis auf die Programme die mit Parametern aufgerufen werden müssen.

Ein Paar Vorab infos:
OS: Vista
Script Sprache: VBScript

Mein ansatz zum öffnene des Programms:

01.
set wshShell = CreateObject("WScript.Shell") 
02.
set objwshShell = WScript.CreateObject("WScript.Shell") 
03.
 
04.
paraC = "-para1 name -para2 -para3" 
05.
path = objwshShell.Environment("Process")("ProgramFiles") 
06.
 
07.
wshShell.Run ("""" & path & "\Firma\ProgramName\Version\Client\programm.exe"  & """" & " " &  paraC),0
Das Programm öffnet sich zwar doch leider ohne die parameter zu beachten.

Wie bekomme ich mein vorhaben hin?


Danke im vorraus für eure Hilfe!


Gruß

0cool
Mitglied: Logan000
16.06.2011 um 13:11 Uhr
Moin moin

Wenn ich raten müste wüde ich sagen du hast dich mit den Hochkommas verhaspelt.
Warum baust du den String den du ausführen möchtest nicht erstmal sauber zusammen?
Etwa so:
01.
.... 
02.
runCommand = path & "\Firma\ProgramName\Version\Client\programm.exe " & paraC 
03.
wshShell.Run runCommand 
Und was soll das mit ,0 hinter der Klammer (Zeile 7)?
Entweder du klammerst alle Parameter ein oder keine.

Gruß L.
Bitte warten ..
Mitglied: 0cool
16.06.2011 um 13:22 Uhr
@Logan000: Danke für deine Antwort.

Um den Path und überprüfen ob der stimmt, habe ich die folgende codezeile eingabenaut

01.
WScript.Echo """" & path & "\Firma\ProgramName\Version\Client\programm.exe"  & """" & " " &  paraC
Das Ergebniss ist das folgende:

"C:\Program Files\Firma\ProgramName\Version\Client\programm.exe" -para1 name -para2 -para3

Wenn ich den Parameter 0 in die Klammer schreibe, kommt die folgende Meldung:

Fehler: Beim Aufrufen einer Unterroutine (Sub) dürfen keine Klammern verwendet werden.
Code: 500A414
Quelle: Kompilierungsfehler in Microsoft VBScript

Gruß

0cool
Bitte warten ..
Mitglied: Friemler
16.06.2011 um 13:26 Uhr
Hallo 0cool,

die Parameter müssen zusammen mit dem Programmpfad in Anführungszeichen eingeschlossen werden.

Gruß
Friemler
Bitte warten ..
Mitglied: 0cool
16.06.2011 um 13:45 Uhr
@Friemler: Danke für deine Antwort, leider funktioniert es so auch nicht.

Bei überprüfung des Pfades bekomme ich das Ergebnis:

"C:\Program Files\Firma\ProgramName\Version\Client\programm.exe -para1 name -para2 -para3"

Beim Programm öffnen erscheint die folgende Fehlermeldung:

Fehler: Das System kann den angegebenen Pfad nicht finden.
Code: 80070002
Quelle: (null)

Das kommische ist, dass ich das Programm samt Paramter über den Ausführen Dialog nur starten kann, wenn ich fogendes eingebe:

"C:\Program Files\Firma\ProgramName\Version\Client\programm.exe" -para1 name -para2 -para3

Wo liegt der unterschied zwischen ausführen und dem VBScript?

Gruß

0cool
Bitte warten ..
Mitglied: Logan000
16.06.2011 um 14:28 Uhr
moin

Zitat von Friemler:
die Parameter müssen zusammen mit dem Programmpfad in Anführungszeichen eingeschlossen werden.
Sorry. Das ist jetzt Blödsinn.
Entweder:
01.
"C:\Program Files\Firma\ProgramName\Version\Client\programm.exe" -para1 name -para2 -para3
oder aber
01.
"C:\Program Files\Firma\ProgramName\Version\Client\programm.exe" "-para1 name -para2 -para3"
Wäre kein Leerzeichen im Pfad könnte man das Hochkomma gescheuder auch weglassen.

Zitat von 0cool:
Wo liegt der unterschied zwischen ausführen und dem VBScript?
Ich kenne keinen.
01.
..... 
02.
runCommand = """" & path & "\Firma\ProgramName\Version\Client\programm.exe" & """" & " " & paraC 
03.
wshShell.Run runCommand 
Solte funktionieren.
Gegebenenfalls müssen deine paraC auch noch mal in Hochkommas gesetzt werden.
Etwa So.
01.
..... 
02.
runCommand = """" & path & "\Firma\ProgramName\Version\Client\programm.exe" & """" & " " & """" & paraC & """" 
03.
wshShell.Run runCommand 
Gruß L.
Bitte warten ..
Mitglied: 0cool
16.06.2011 um 15:02 Uhr
@Logan000: Danke für deine Antwort.

Das Programm startet jetzt mit deiner Variante 2, doch leider werden die Parameter ignoriert.
Hast du noch ne Idee wie ich an mein Ziel komme?

Gruß

0cool
Bitte warten ..
Mitglied: Friemler
16.06.2011 um 15:06 Uhr
Hallo 0cool,

Logan hat recht, mein Vorschlag war Blödsinn. Man sollte auch nicht versuchen, sowas noch schnell fertig zu machen, bevor der Kunde kommt...

Der Kommandostring muss genauso aufgebaut werden, als würdest Du ihn unter "Ausführen" eingeben.

Gruß
Friemler
Bitte warten ..
Mitglied: 0cool
16.06.2011 um 15:10 Uhr
@Friemler: Wenn ich den Pfade so aufbaue das nur der Programm Pfad in Hochkommas steht dann öffnet er mir das Programm ohne die Parameter zu beachten.

Gruß

0cool
Bitte warten ..
Mitglied: Logan000
16.06.2011 um 15:12 Uhr
Moin

Zitat von 0cool:
Das Programm startet jetzt mit deiner Variante 2, doch leider werden die Parameter ignoriert.
Hast du noch ne Idee wie ich an mein Ziel komme?

Nicht ohne das exakte Programm und die genauen Parameter zu kennen.

Gruß L.
Bitte warten ..
Mitglied: Friemler
16.06.2011 um 15:28 Uhr
Hallo 0cool,

dann musst Du etwas mehr über die Parameter verraten. Wenn z.B. das name in Deiner Beispiel-Parameterliste Leerzeichen enthält, muss name in Anführungszeichen gesetzt werden.

Gruß
Friemler
Bitte warten ..
Mitglied: 0cool
16.06.2011 um 15:46 Uhr
@Friemler: das Aufbau des Pfades und der Parameter ist genau so wie ich es geschrieben hatte.

Pfad samt Paramerter:
C:\Program Files\Firma\ProgramName\Version\Client\programm.exe -para1 name -para2 -para3

Das einzige was von mir geändert wurde, sind die Namen aber das ist ja klar ersichtliche.

Was willst du den noch wissen, ich geb dir jede Auskunft die ich dir geben kann bzw. darf.


Gruß

0cool
Bitte warten ..
Mitglied: Friemler
16.06.2011 um 16:14 Uhr
@0cool:
Dann poste doch bitte nochmal Deinen jetzigen Code. Da Du den wegen Geheimnistuerei ja immer ändern musst, überlege Dir genau, was Du änderst. Der Code aus Deinem Eröffnungsposting hätte nämlich nur eine Fehlermeldung produziert, Du hast aber geschrieben, das Programm würde sich öffnen jedoch die Parameter nicht beachten.

Gruß
Friemler
Bitte warten ..
Mitglied: 76109
16.06.2011 um 16:32 Uhr
Hallo 0cool!

Versuchs mal so:
runCommand = Chr(34) & Chr(34) & Path & "\Firma\ProgramName\Version\Client\programm.exe" & Chr(34) & " " & paraC & Chr(34)

Gruß Dieter
Bitte warten ..
Mitglied: 0cool
17.06.2011 um 11:35 Uhr
@Friemler wie du gewünscht hast poste ich noch mal den aktuellen Code.

Am Code habe ich noch ein bissen gefeilt.

Der aktuelle Code:
01.
' Objekte deklarieren 
02.
set objwshShell = WScript.CreateObject("WScript.Shell") 
03.
 
04.
' variblen deklarieren 
05.
paraC =  """" & "-para1 name"  & """" 
06.
paraD = " -para2" 
07.
paraE = " -para3" 
08.
path = objwshShell.Environment("Process")("ProgramFiles") 
09.
strsw = """" & path & \Firma\ProgramName\Version\Client\programm.exe" & """" 
10.
 
11.
' Pfad anzeigen 
12.
WScript.Echo strsw & " " & paraC & " " & paraD & " " & paraE 
13.
 
14.
' Prgramm wird gestartet 
15.
wshShell.Run (strsw & " " & paraC & " " & paraD & " " & paraE)
Was ich nicht verstehe ist, das ich ein anderes VBS Projekt von mir als vorbild genomme habe und nach dem gleichen Prinzip den Code aufgebaut habe.
Der einzige Unterschied ist, das in dem Anderen Projekt das Programm robocopy mit einigen Parametern gestartet wird.


Gruß

0cool
Bitte warten ..
Mitglied: 0cool
17.06.2011 um 11:55 Uhr
@76109: deine Verersion habe ich auch auch schon getestet es funktioniert bloss nicht so wie ich das will.

Der aktuelle Stand ist, das sich das Script zwar öffnet aber die Paramter werden ignoriert.


Gruß

0cool
Bitte warten ..
Mitglied: Friemler
17.06.2011 um 12:29 Uhr
Hallo 0cool,

abgesehen davon, dass in Zeile 15 Deines obigen Scripts objwshShell.Run stehen müsste, damit es funktioniert, kann ich sonst nichts falsches daran entdecken. Baue den Programmaufruf doch mal als konstanten String in das Script ein, ohne Variablen. Mal schauen was dann passiert.

Gruß
Friemler
Bitte warten ..
Mitglied: 0cool
17.06.2011 um 13:18 Uhr
@Friemler: du hast recht mit der objektzuweisung. Ich habe nur vergessen die Zeile mit zu posten.

Die Pfadangabo ohne Variablen habe ich gerade versucht, leider hat das auch nicht funktioniert.

Gruß

0cool
Bitte warten ..
Mitglied: 0cool
17.06.2011 um 13:31 Uhr
Vielen Dank an alle die mir mit rat und Tat zu seite Standen.

Ich werde den Beitrag schliessen da, ich mehr arbeit in diesen Code schnipsel reinstecke, wie das er mir nachher bringt.

Das Starten des Programms ist nur ein teil des Scriptes. Ende des Scripte schmeisse ich eine Meldung aus in der ich aufgeforder werde das Programm zu starten.
Für dieses Programm gibt es eine Desktop Verknüpfung, mit der lässt sich das Programm mit Parameter starten.

Hinweis: Über Die Desktop Verknüpfung das Programm zu starten habe ich auch schon versucht. Das hat leider auch nicht funktioniert.


Danke an euch alle!

Gruß

0cool
Bitte warten ..
Mitglied: Gertruede
21.06.2011 um 16:01 Uhr
Hi 0cool,
ich weiss nicht, was Du willst. auf der einen Seite ist der Code fast richtig, auf der anderen Seite vielleicht völlig falsch.
Also, um grundsätzlich zu funktionieren sind 2 noch 2 Fehlerchen drin.
1. Zeile 15 wshshell muss objwshshell heißen (siehe Post von Friemler)
2. in Zeile 9 fehlt vor \Firma\Prog...... ein Gänsefüsschen, also so: strsw = """" & path & "\Firma\ProgramName\Version\Client\programm.exe" & """"

Du schreibst, das in dem Original-Projekt Robocopy gestartet wurde. Kann ich so eigentlich nicht verstehen.
wshshell ist nun mal keine DOS bzw. Command Shell. Auf die von dir genutzte Art startet man eigentlich nur reine Windows Applikationen wie z.B. Calc.exe

Sollte es eine DOS Anwendung sein, dann hast Du als nächstes Problem, dass Du zwar die exe am richtigen Ort startest, dein "Standort" aber nicht im selben Pfad ist. Wenn die EXE also etwas mit Dateien in demselben Verzeichnis anstellen soll, muss Du den Pfad dafür ebenfalls miteinbinden.

Das wäre alles viel einfacher, wenn Du hier nicht einen auf Geheimdienst machen würdest und mal ansagst, wie Du Dir den tatsächlichen Aufruf vorstellst und was Du damit wo (Pfad, nicht Firma!!!) auslösen willst
Dann klärt sich so einiges.
Grüße
Gertruede
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Basic
gelöst Mit Visual Basic Batch Datei öffnen (26)

Frage von Flodsche zum Thema Basic ...

Visual Studio
gelöst Remotedienst prüfen mit Visual Basic (1)

Frage von flyingmichael zum Thema Visual Studio ...

Visual Studio
Mit Visual Basic auf Shopware 5 API zugreifen (9)

Frage von SmogKiel zum Thema Visual Studio ...

Visual Studio
gelöst Pastebin auslesen mit Visual Basic? (2)

Frage von UltraZz zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...