lena123
Goto Top

Konsolenprogramm mit Shell-Befehl starten

Hallo!

Ich starte aus Excel ein Konsolenprogramm indem ich den Pfad und die Befehle in eine Zelle schreibe "C:\...\programm.exe [Befehle] "
und diese dann mit dem Shell-Befehl ausführe: Shell Tabelle1.Cells(5, 13), vbNormalFocus.
Das funktioniert auch einwandfrei, nun zum Problem:
Wenn ich die exe auf dem Konsolenfenster ausführe kann ich mit 2>>verlauf.txt den Verlauf der auf der Konsole ausgegeben wird speichern.
Wenn ich das gleiche mit in die Zelle schreibe: "C:\...\programm.exe [Befehle] 2>>verlauf.txt", funktioniert es aber nicht.
Ich habe leider nicht mehr Eigenschaften des Shell-Befehls gefunden. Kann mir da jemand einen Tipp geben?

Viele Grüße

Content-ID: 70683

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

bastla
bastla 11.10.2007 um 14:58:39 Uhr
Goto Top
Hallo lena123!

Versuch es so:
Shell "cmd /c " & Tabelle1.Cells(5, 13), vbNormalFocus  

Etwas überrascht bin ich von der Tatsache, dass Du "2>>" für die Umleitung der Ausgabe verwendest, da üblicherweise der Ausgabekanal 2 für Fehlermeldungen vorgesehen ist ...

Grüße
bastla
lena123
lena123 11.10.2007 um 15:56:57 Uhr
Goto Top
Hallo Bastla!

Vielen Dank! Jetzt wird mir wenigstens schonmal eine verlauf.txt-Datei angelegt, allerdings mit folgendem Inhalt:

'C:\Documents' is not recognized as an internal or external command, operable program or batch file.


Kann ich auch erst das Konsolenfenster öffnen und dann die "programm.exe" mit verschiedenen Befehlen ausführen? "cmd /K " sollte ja die Anwendung geöffnet lassen, ich bin mir nur nicht sicher wie ich dann wieder auf dieses Fenster zugreifen kann!

gruß
bastla
bastla 11.10.2007 um 16:14:59 Uhr
Goto Top
Hallo lena123!

Kann ich auch erst das Konsolenfenster öffnen und dann die "programm.exe" mit verschiedenen Befehlen ausführen? "cmd /K " sollte ja die Anwendung geöffnet lassen, ich bin mir nur nicht sicher wie ich dann wieder auf dieses Fenster zugreifen kann!
"cmd /K" könnte zwar bei der Fehlersuche helfen, da eben das "Shell"-Fenster geöffnet bleibt, aber ansonsten ist "cmd /c" schon ok.

'C:\Documents' is not recognized as an internal or external command, operable program or batch file.
sieht nach fehlenden Anführungszeichen aus (gemeint war vermutlich "C:\Documents and Settings\...").

Vielleicht beschreibst Du etwas genauer, wie der Programmaufruf aussehen soll.


Grüße
bastla
lena123
lena123 11.10.2007 um 16:39:49 Uhr
Goto Top
Hallo bastla,

also, mein Befehl sieht wie folgt aus:

programm.exe [options] -o outputfile inputfile [WidthxHeight]

In der Zelle (Tabelle1.Cells(5, 13)) steht dann folgendes:

C:\...\programm.exe [options] -o "C:\...\test.264" "C:\...\original.yuv" 2>>verlauf.txt

Dann werden details zum Verlauf auf der Konsole ausgegeben, z.B:

[ProgrammInfo] : x
[ProgrammInfo] : y

Was meinst Du mit fehlenden Anführungszeichen? Wenn ich den Befehl nochmal in Anführungszeichen schreibe bekomme ich eine Fehlermeldung.

Gruß
bastla
bastla 11.10.2007 um 17:09:03 Uhr
Goto Top
Hallo lena123!

Was meinst Du mit fehlenden Anführungszeichen?
Einer der von Dir mit "C:\...\" angegebenen Pfade, zB jener zur Programmdatei selbst, enthält vermutlich ein Leerzeichen, und wenn dieser Pfad nicht durch Anführungszeichen "zusammengehalten" wird, interpretiert die CMD-Shell das Leerzeichen als Trennzeichen zwischen Programm und Optionen - daher also zur Sicherheit auch den Programmaufruf ("C:\...\programm.exe") unter Anführungszeichen setzen und den "Shell"-Befehl wie folgt ändern:
Shell "cmd /k " & Chr(34) & Tabelle1.Cells(5, 13) & Chr(34), vbNormalFocus  

Grüße
bastla
lena123
lena123 11.10.2007 um 17:22:36 Uhr
Goto Top
Hi bastla,

das funktioniert einwandfrei!

Vielen vielen Dank, das hat mir echt geholfen!

Viele Grüße