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-Key: 70683

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

Printed on: April 25, 2024 at 11:04 o'clock

Member: bastla
bastla Oct 11, 2007 at 12:58:39 (UTC)
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
Member: lena123
lena123 Oct 11, 2007 at 13:56:57 (UTC)
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ß
Member: bastla
bastla Oct 11, 2007 at 14:14:59 (UTC)
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
Member: lena123
lena123 Oct 11, 2007 at 14:39:49 (UTC)
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ß
Member: bastla
bastla Oct 11, 2007 at 15:09:03 (UTC)
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
Member: lena123
lena123 Oct 11, 2007 at 15:22:36 (UTC)
Goto Top
Hi bastla,

das funktioniert einwandfrei!

Vielen vielen Dank, das hat mir echt geholfen!

Viele Grüße