Wie kann ich verhindern, MATLAB wieder aus, bis nach ein Befehlszeilen-Skript abgeschlossen ist?

StackOverflow https://stackoverflow.com/questions/14495

  •  08-06-2019
  •  | 
  •  

Frage

Ich sehe in der MATLAB-Hilfe (matlab -h), dass ich das -r flag, um anzugeben, eines m-Datei ausgeführt werden.Ich merke, wenn ich dies tun, MATLAB scheint, um das Skript zu starten, aber sofort zurückkehren.Das Skript verarbeitet in Ordnung, aber die Haupt-app hat bereits zurückgekehrt.

Gibt es eine Möglichkeit, um MATLAB zu erst zurückkehren, wenn der Befehl beendet ist?Wenn Sie nennen es von einem separaten Programm, wie es scheint, es ist einfacher zu warten, auf den Prozess als auf einem Datei-oder Steckdosen auf den Abschluss bestätigt.

Um zu veranschaulichen, hier ein Beispiel Funktion waitHello.m:

function waitHello
    disp('Waiting...');
    pause(3); %pauses 3 seconds
    disp('Hello World');
    quit;

Und ich versuche, führen Sie dies mit:

matlab -nosplash -nodesktop -r waitHello
War es hilfreich?

Lösung

Schnelle Antwort:

matlab -wait -nosplash -nodesktop -r waitHello

In Matlab 7.1 (die version die ich habe) es gibt einen undokumentierten Kommandozeilen-option -wait in matlab.bat.Wenn es nicht funktioniert, die Ihrer version, Sie könnte wahrscheinlich fügen Sie es in.Hier ist was ich gefunden habe.Der Befehl an der Unterseite, die schließlich startet matlab (Linie 153):

start "MATLAB" %START_WAIT% "%MATLAB_BIN_DIR%\%MATLAB_ARCH%\matlab" %MATLAB_ARGS%

Die relevante syntax des start-Befehls (siehe "Hilfe-start" in cmd.exe in diesem Fall ist:

start ["window title"] [/wait] myprogram.exe args ...

Ein bisschen höher ist, unter allen die dokumentierten Befehl line Optionen, die ich gefunden (Zeile 60):

) else if (%opt%) == (-wait) (
  set START_WAIT=/wait
) else (

So angeben -warten Sie sollte tun, was Sie wollen, so lange wie Sie sind auch spannend matlab-Skript (sonst wird es warten für Sie zu beenden es interaktiv).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top