Also, Ergebniswert == kein Fehler ist durchaus zu erwarten, Du bekommst den Rückgabewert von CMD.EXE und der gibt nun mal eigentlich keinen echten Status zurück. Der Status von test.bat steht in der Umgebungsvariablen errorlevel (oder so, habs grad nciht mehr genau in Errinnerung) und diese Umgebungsvariable ist transient, sprich ist schoh wieder weg, wenn der CMD geschlossen wird.
Suche mal mit der Suchfunktion nach der Ausgabedatei. Ich vermute mal, dass Du nicht im richtigen Verzeichnis bist. Das was Du hier gepostet hast, spielt sich im aktuellen Dir ab, und das ist, wenn Du aus der Applikation startest, stark vom Zufall abhängig (Wie wurde die App gestartet, wurde von irrgend einem Prozess das aktuelle Verzeichnis gewechselt usw. usw., sprich, das ist echt unzuverlässig).
Anders ausgedrückt, damit Du das erwartete Ergebnis bekommst, braucht Deine test.bat mindestens 2 Zeilen mehr:
D:
cd \dasGewuenschteVerzeichnis
Alternativ lässt sich natürlich der Parameter zum Dir fest verdrahen.
Lohnen dürfe sich auch, den Redirekt auf einen festen Pfad zu verdrahten:
dir D:\MeinDatenverzeichnis > C:\Tenp\Dirausgabe.txt