簡體   English   中英

從命令行運行 m 文件時如何隱藏“MATLAB 命令行窗口”?

[英]How do I hide “MATLAB Command Window” when I run an m-file from command line?

我正在使用如下命令行字符串運行 MATLAB:

C:\<a long path here>\matlab.exe -nodisplay -nosplash -nodesktop -r "run('C:\<a long path here>\mfile.m');"

m 文件包含plot() function 到 plot xy 平面上的簡單曲線。

m 文件成功運行並使用我在上面指定的命令行字符串繪制繪圖。 但是,每次我運行此命令時,都會出現一個名為“MATLAB 命令行窗口”的 window 以及繪圖。

如何使此“MATLAB 命令行窗口”不出現,以便只有繪圖可見。

“MATLAB 命令行窗口”如下所示:在此處輸入圖像描述

跑:

matlab -automation -wait -r "cd \'...\';..."

,這將在用戶 session 中顯示最小化的 Window。 根據Amro的建議,我們可以將最小化的window發送到本地winlogin session,這樣我們甚至看不到最小化的Window:

psexec /i 0 matlab -nodesktop -wait -r "plot(rand(100,1)); print -dpng out.png;quit" >null 2>&1

,which will save the figure to C:\Windows\System32 silently (if ISD service is enabled it may pop up an interactive services detection dialog window, and /s or /x option do not work in Windows server 2003 or 2008.)

好消息!

通過一點 Java 操作,這是可能的! 正常啟動 MATLAB(使用桌面等)現在運行setDesktopVisibility (false) 並瞧。 例如

setDesktopVisibility(false);
mesh(rand(10));
pause;
setDesktopVisibility(true);

AFAIK 你不能使用 matlab.exe 的選項在matlab.exe上做到這一點。 如果你真的需要隱藏它,我建議使用MATLAB 引擎來顯示你的身材。 此外,如果它是用於繪圖等簡單的事情,您可以使用GNU Octave ,它適用於 M 文件並且沒有像 MATLAB 那樣的“命令窗口”(它在 Windows 命令提示符中運行並隱藏它並不難) .

如果您是從 Windows 上的另一個程序運行的 Matlab,您可以使用Matlab ZD47C174ED277BDF0CZFC 自動化服務器運行它。 ActiveX 控件有一個 Visible 屬性,可讓您使命令 window 不可見,但看起來它使繪圖可見。

這是一個如何使用另一個 Matlab 作為 controller 的示例。

ml = actxserver('Matlab.Application');
ml.Visible = false;
ml.Execute('surf(peaks)');

或在 VBScript 中。

Set ml = CreateObject("Matlab.Application")
ml.Visible = false
ml.Execute("surf(peaks)")
ml.Execute("pause(4)")

無論如何,這種交互模式可能更符合您的需求,具體取決於您的工作流程的結構,因為它可以讓您啟動 Matlab 進程並在其上發出許多 plot 請求,從而節省啟動成本並讓您在一次。

如果您仍想從命令行調用它,只需使用上述 VBScript 代碼通過 a.vbs 包裝腳本運行它,但調用run('...\mfile.m')而不是surf(peaks) 您的 mfile.m 將需要一些 GUI 邏輯,使其阻塞,直到用戶關閉 plot,替換pause調用,因此在他們完成查看之前它不會消失。

com.mathworks.mde.desk.MLDesktop.getInstance.closeCommandWindow

您可能可以從命令行使用它:

-r "com.mathworks.mde.desk.MLDesktop.getInstance.closeCommandWindow; run('C:\<a long path here>\mfile.m');"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM