Ich möchte eine Batch-Datei in DOS von MATLAB ausführen und die Kontrolle sofort an MATLAB zurückgeben. Ich möchte dies jedoch tun, ohne ein DOS-Fenster zu öffnen (oder zumindest das Dos-Fenster am Ende verschwinden zu lassen).
Wenn ich meinen Befehl so formatiere ...
%Vor%dann führt MATLAB die Batch-Datei aus, ohne ein Dos-Fenster zu öffnen, aber der MATLAB-Code muss auf die Rückgabe warten.
Wenn ich meinen Befehl so formatiere ...
%Vor%Die Kontrolle wird sofort an MATLAB zurückgegeben, aber es zeigt auch das DOS-Fenster an, das ich nicht möchte. (Es ist auch schwierig zu erkennen, wann die Batch-Datei "fertig" ist, wenn Sie es auf diese Weise machen)
Jede Hilfe wäre willkommen.
Verwenden Sie Matlab External Interfaces-Unterstützung, um Zugriff auf die Prozesssteuerungsfunktionen einer untergeordneten Ebene zu erhalten.
Verwenden Sie die .NET System.Diagnostics.Process-Klasse. Damit können Sie einen Prozess asynchron ausführen, nach dem Exit suchen und den Exit-Code sammeln. Und Sie können optional sein Fenster ausblenden oder es zum Debuggen sichtbar lassen.
Sie können .NET-Klassen direkt aus M-Code aufrufen.
%Vor%Die .NET-Version benötigt ein Matlab, das neu genug ist, um .NET-Unterstützung zu haben. Hier ist eine Java-basierte Version für ältere Matlabs, wie OP es ausstellt. Sollte auch auf Nicht-Windows-Systemen mit ein wenig Modifikation funktionieren.
%Vor%Sie müssen möglicherweise mit der E / A in der Java-Version herumhantieren, um zu vermeiden, den gestarteten Prozess anzuhalten; demarcmj merkt an, dass Sie den Eingabestrom des Prozesses für stdout lesen und leeren müssen, um zu vermeiden, dass er sich füllt.
Verwenden Sie das Cmdlet start
, das mit dem Windows-Befehlsinterpreter gebündelt ist.
Sie können wahrscheinlich nur system('start /MIN batchfilename.bat');
Fügen Sie einen exit
-Befehl am Ende der Batch-Datei ein, um sicherzustellen, dass Sie keine (minimierte) Eingabeaufforderung erhalten.
Tags und Links matlab batch-file dos