So, jetzt sitze ich auf dem trimmdich Rad und habe Zeit. Bloß immer noch das Handy :-/
Stdout und Stderr sind Streams, d.h. was du da herausgelesen hast, ist weg. Deswegen hast du in line
die erste Zeile und in abc
den Rest. Readall liest bis zum Ende des Streams - ich muss allerdings zugeben, dass ich nicht weiß wie sich das Objekt in wx bei Pipe-Streams verhält. Der DIR Befehl läuft echt parallel zur Leseschleife, und wenn ein readAll ihn bis zum AKTUELLEN Ende liest, kann es sein, dass der noch laufende DIR Befehl danach noch ein paar Zeilen nachlegt. Deswegen readLine in der Schleife, der liest immer eine ganze Zeile. Wenn du die Dateinamen weiter verarbeiten willst, speicherst du sie in der Schleife am besten in einem Array (Tabelle). Für eine Anzeige in einer MsgBox kannst du die Tabelleneinträge zu einem langen String zusammensetzen, mit jeweils einem CHR(13) (Neue Zeile) dazwischen.
Ich hoffe, das ist dir jetzt nicht zu abstrakt...
Exec im Hintergrund, tja, Exec führt das Programm als separaten Prozess aus. Über stdout liest du sozusagen live mit, was das laufende CMD schreibt. Hintergründiger geht kaum. Wenn du das ganze VBScript im Hintergrund laufen lassen willst, ist das was anderes, aber dann musst du vermutlich einiges umbauen. Einfach mal einen Arbeitsthread starten ist im cscript meines Wissens nicht vorgesehen. Um da was empfehlen zu können, müsste ich mehr Kontext haben (und nicht so schwitzen wie gerade...)
Rolf