Discussion:
Umleiten der DOS Fenster ausgabe?
(zu alt für eine Antwort)
miko allegra
2004-11-19 14:26:24 UTC
Permalink
Hallo NG

Ich möchte über Shell-Funktion ein DOS Befehl ausführen
und dessen Ausgabe in eine Textdatei umleiten.

Beispiel im DOS Fenster:

C:\dir > C:\dir_ausgabe.txt

Dies speichert DIR Ausgabe in die Textdatei wie erwartet.

Wenn ich das selbe in VBA über Shell ausführe, geht das
nicht mehr!?

Dim Res
Res=Shell("dir > C:\dir_ausgabe.txt")

Warum geht das nicht? Weiss jemand wie ich so ne Ausgabe
sonst noch mit VBA umleiten könnte?

Danke im Voraus.

Gruss
Peter Neumaier
2004-11-19 14:32:19 UTC
Permalink
Post by miko allegra
Hallo NG
Ich möchte über Shell-Funktion ein DOS Befehl ausführen
und dessen Ausgabe in eine Textdatei umleiten.
C:\dir > C:\dir_ausgabe.txt
Dies speichert DIR Ausgabe in die Textdatei wie erwartet.
Wenn ich das selbe in VBA über Shell ausführe, geht das
nicht mehr!?
Dim Res
Res=Shell("dir > C:\dir_ausgabe.txt")
Warum geht das nicht? Weiss jemand wie ich so ne Ausgabe
sonst noch mit VBA umleiten könnte?
Danke im Voraus.
Gruss
Vielleicht den Aufruf in eine *.bat speichern, und diese dann ausführen?
a***@discussions.microsoft.com
2004-11-19 15:29:38 UTC
Permalink
Post by Peter Neumaier
Vielleicht den Aufruf in eine *.bat speichern, und diese
dann ausführen?


Danke für den Vorschlag, würd ich aber als letzte Lösung
einsetzen.

Ich könnte aber DOS Fenster zuerst aufrufen und die
Parameter übergeben, vielleicht würd das ja funktionieren.
Nun wenn ich folgendes schreibe:

Dim res
res = Shell("cmd /p dir > C:\dir_ausgabe.txt")

wird zwar DOS Fenster geöffnet, jedoch werden keine
Parameter an cmd-zeile übergeben! Wie muss ich den Aufruf
richtig stellen?

Danke
Peter Doering
2004-11-19 15:49:50 UTC
Permalink
Hallo,
Post by miko allegra
C:\dir > C:\dir_ausgabe.txt
Res=Shell("dir > C:\dir_ausgabe.txt")
Zunaechst muss der Aufruf so aussehen:

Res = Shell(Environ$("COMPSPEC") & " /C Dir > C:\dir_ausgabe.txt")

Wenn du mit dir_ausgabe.txt weiterarbeiten willst, musst du sicherstellen,
dass die Shell beendet ist, bevor du die Ausgabedatei oeffnen kannst, denn
die Shell laeuft in einem eigenen Prozess weiter. Um das zu verhindern,
kannst du ShellWait benutzen, siehe FAQ 6.14 (www.donkarl.com und
http://www.mvps.org/access/api/api0004.htm).

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
a***@discussions.microsoft.com
2004-11-19 16:02:24 UTC
Permalink
Post by Peter Doering
Res = Shell(Environ$("COMPSPEC") & " /C Dir >
C:\dir_ausgabe.txt")


Bei mir liefert Environ$("COMPSPEC") nichts. Nun hab ich
es mit Access 97 getestet, vielleicht ist es ja anderes
bei XP, 2003 (ich brauch es eigentlich für Access 2003).

Beim Ausführen erscheint die Meldung: Datei nicht gefunden
wobei der String dann schliesslich so aussieht:

/C Dir > C:\Textdatei.txt

was natürlich nicht funktionieren kann!

Ich muss natürlich warten bis CMD beendet ist (es dauert
etwas länger) erst dann kann ich weitere Befehle
ausführen. Daher verwende ich bereits so ne ShellWeit
funktion.

Danke
Gerald Aichholzer
2004-11-19 16:16:05 UTC
Permalink
Post by miko allegra
Post by Peter Doering
Res = Shell(Environ$("COMPSPEC") & " /C Dir >
C:\dir_ausgabe.txt")
Bei mir liefert Environ$("COMPSPEC") nichts. Nun hab ich
es mit Access 97 getestet, vielleicht ist es ja anderes
bei XP, 2003 (ich brauch es eigentlich für Access 2003).
Wahrscheinlich ein Tippfehler - richtig sollte es (IMHO)
Environ$("COMSPEC") lauten.

HTH,
Gerald
a***@discussions.microsoft.com
2004-11-19 16:30:51 UTC
Permalink
Eben

Danke in jedem Fall und ein schönes Wochenende!

Peter Doering
2004-11-19 16:21:49 UTC
Permalink
Hallo,
Post by miko allegra
Post by Peter Doering
Res = Shell(Environ$("COMPSPEC") & " /C Dir >
C:\dir_ausgabe.txt")
Bei mir liefert Environ$("COMPSPEC") nichts.
Sorry, Tippfehler, muss "COMSPEC" heissen.
Post by miko allegra
Beim Ausführen erscheint die Meldung: Datei nicht gefunden
/C Dir > C:\Textdatei.txt
was natürlich nicht funktionieren kann!
Probier nochmal mit ComSpec.

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
a***@discussions.microsoft.com
2004-11-19 16:30:23 UTC
Permalink
Vielen Dank , das hat jetzt wunderbar funktioniert. Mal am
Montag schauen ob es auch im benötigten Programm
funktionieren wird (dort wird das eben über diese
ShellWait funktion aufgerufen).

Danke und schönes Wochenende!
Loading...