2016-04-06 17 views
1

in die Befehlszeile gedruckt wird Bevor Sie antworten, suche ich nicht nach der Funktionalität von ;, um das Drucken von Befehlszeilen zu unterdrücken.Verhindern, dass in MATLAB

Ich habe eine Reihe von Skripten, die nicht von mir sind und ich habe nicht die Fähigkeit zu ändern. In meinen Skripten rufe ich jedoch über evalin('base', 'scriptName') diese anderen Skripte an. Leider machen diese anderen Skripts unnötigen und hässlichen Druck auf das Befehlsfenster, das ich nicht sehen möchte. Ohne in der Lage zu sein, diese anderen Skripte zu bearbeiten, möchte ich eine Möglichkeit haben, die Ausgabe für die Zeit, die diese anderen Skripte ausführen, in die Befehlszeile zu unterdrücken.

Eine mögliche Antwort war, evalc zu verwenden, aber wenn ich versuche evalc(evalin('base', 'scriptName')) wirft MATLAB einen Fehler, der beschuldigt, dass es ein Skript nicht als Funktion ausführen kann. Ich hoffe, es gibt so etwas wie die Fähigkeit, das Drucken des Befehlsfensters zu deaktivieren oder die gesamte Ausgabe auf eine Null-Datei umzuleiten, ähnlich wie /dev/null in Unix.

+0

Wie werden die Skripte in das Befehlsfenster ausgeben? Mangel an ';'? 'disp'? 'fprintf'? Warum können Sie die Skripte nicht bearbeiten? – excaza

+0

Sie verwenden in der Regel 'fprintf'. Ich kann die Skripte nicht bearbeiten, weil sie nicht meine sind und ich keinen Zugriff darauf habe. Ich kann sie nur laufen lassen. – zephyr

+0

Sie konnten * [überladen 'fprintf'] (http://stackoverflow.com/a/3029833/2748311) nichts tun, aber das ist keine gute Lösung. Sie sind besser dran, die Dateien selbst zu reparieren. Sie wären auch viel besser dran, diese Skripte in Funktionen umzuwandeln, so dass Sie Argumente explizit übergeben, anstatt sich auf "evalin" zu verlassen, um richtig zu funktionieren. – excaza

Antwort

1

Ich denke, man muss nur das Argument in Ihrem evalc Beispiel in einen String drehen:

evalc('evalin(''base'', ''scriptName'')'); 
+0

Sie sind absolut richtig. Ich fühle mich dumm, dass ich das vorher nicht bemerkt habe. Diese Lösung hat funktioniert! – zephyr

0

Haben Sie diese Lösung versucht here?

echo off; 
+2

'echo' ist nicht standardmäßig aktiviert, und wenn es eingeschaltet war, würde es jeden ausgeführten Befehl drucken, was hier nicht der Fall zu sein scheint. – excaza

+0

Ich fand das auch, aber es trifft nicht auf meine Situation zu. Wenn echo eingeschaltet ist, werden alle ausgeführten Befehle einfach in das Befehlsfenster gedruckt. Wenn diese Option deaktiviert ist, wird das "Feature" deaktiviert, aber es werden weiterhin tatsächliche Ausgaben im Befehlsfenster ausgeführt. "Echo" hat nichts mit meiner Frage zu tun. – zephyr

0

Ich weiß nicht, ob es Ihren Bedürfnissen passen, aber eine andere Lösung kann eine neue Sitzung von Matlab zu öffnen, und es nur -nodesktop Form minimiert verwenden (-Just Befehlsfenster). Sie können von dort aus die lästigen Skripte ausführen und wie gewohnt an der Hauptsitzung arbeiten.

Das Problem hier ist, dass die Sitzungen nicht synchronisiert werden können. Wenn Sie also ständig mit den Ergebnissen der Skripte arbeiten müssen, wird es ein wenig kompliziert. Vielleicht können Sie das Ergebnis auf Festplatte speichern, als es von der Hauptsitzung aus aufrufen ... Aber es hängt hauptsächlich von Ihrem Workflow mit diesen Skripten ab.

+0

Guter Versuch, aber leider kann ich das nicht nutzen. – zephyr

Verwandte Themen