[VB 6] Dos-Befehle

Hi

Ich möchte Dos-Befehle ausführen und wenn vorhanden den Rückgabewert auslesen.

also wenn ich im einfachsten Fall dir ausführe soll ich als Rückgabe eine Liste der Dateien kriegen. Geht das?

*der auf hilfe hoffende und sich schon im vorraus bedankende*

Greenberet

Ich möchte Dos-Befehle ausführen und wenn vorhanden den
Rückgabewert auslesen.

Es gibt den sogenannten Error code, den du Problemlos in Batchdateien abfragen kannst. Damit weisst du, ob der jeweilige Befehl korrekt ausgeführt wurde (error code = 0), bei Fehlern gibt es je nach Fehler verschiedene Nummern
Ein Beispiel aus der (alten) DOS Hilfe:

_xcopy %1 %2 /s /e
if errorlevel 4 goto wenig_speicher
if errorlevel 2 goto abbrechen
if errorlevel 0 goto beenden

wenig_speicher

echo Zu wenig Arbeitsspeicher, um die Dateien zu kopieren,
echo unzulässige Laufwerkangabe oder unzulässige
echo Syntax in der Befehlszeile.
goto beenden

abbrechen

echo Sie haben STRG+C gedrückt, um den Kopiervorgang abzubrechen.

beenden_

also wenn ich im einfachsten Fall dir ausführe soll ich als
Rückgabe eine Liste der Dateien kriegen. Geht das?

Du kannst die Bildschirmausgabe von dir in eine Datei umleiten. Weiss jedoch nicht genau, wie du dies dann weiterverwenden willst!

dir c:*.* /s >>f:\dir.txt

Mit diesem Beispiel siehst du jedoch nichts mehr auf dem Bildschirm. Es wird alles in die Datei „dir.txt“ geschrieben.

Falls du einen DOS Befehl bsp. aus einem Turbe_Pascal Programm aufrufst, kannst du auch den Bildschirmspeicher auslegen und so die Rückgabe gewinnen. Jedoch nur das, was nach dem Ausführen auf dem Schirm steht, nicht also die komplette Liste. Ein Beispiel dazu könnte ich irgendwo ausgraben (such such…)

Ich hoffe, das hat geholfen.
Gruss Armin

Hast mir schon sehr weitergeholfen.

Kann mir trotzdem noch wer sagen wie ich den parameter in den shell-command packe?

also „shell(dir c:*.* /s >>f:\dir.txt)“ Datei nicht gefunden.

dir.exe existiert nicht (weder in c: noch in windows oder sonstwo auf der platte also nur in command.com schätz ich mal)

„shell(netstat.exe >>d:\test.txt)“ gibt keine Fehlermeldung
aber auch keine test.txt. (dasselbe auch mit „shell(C:\WINDOWS\netstat.exe >>D:\test.txt)“)

Kann übrigens ruhig über ne api auch sein. Das auslesen stellt für mich kein Problem dar.

Es bedankt sich
Greenberet

API nicht notwendig
Hallo Green

Analog den alten Batchdateien sind interne Befehle (DIR, COPY, etc.) über den Kommandointerpreter mit Parameter „/C“ aufzurufen.

Wenn Dein Prog lediglich unter NT4 / Win2000 läuft, rufst Du im shell Befehl DIR wie folgt auf:
„cmd /c dir *.mp3 /s > my_mp3.txt“

wenn die 9.x OS auch damit laufen müssen:
„command /c dir *.mp3 /s > my_mp3.txt“

Achtung: der Space nach dem Namen des Kommandointerpreter und dem Parameter „/C“ muss sein. Gross-Kleinschreibung egal.

Grüsse Peter :wink:

Servus Greenberet

Wenn du nur ein DIR machen willst, dann kannst du auch den gleichnamigen VB-Befehl dafür verwenden!
Beispiel:

 Dim d As String
 d = Dir("c:\*.\*")
 Do While d \> ""
 MsgBox d
 DoEvents
 d = Dir
 Loop

Man bekommt damit allerdings nur die Dateinamen, andere Werte wie Grösse oder Datum muss man dann mit anderen Funktionen ermitteln.

Ciao
Roland

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]