我在这里发现了一个类似的问题,但对我没有帮助,所以我问自己的问题。
我有一个 matlab 脚本,可以在 linux 下使用 nohup 命令完美运行。
不幸的是,我还需要在 Windows 上运行它。但我不明白为什么我的命令仍然不起作用。
我的脚本做了一个特定的循环,但在第一个循环之后它停止给我一个关于 java 或其他东西的错误。我必须告诉你,如果我不输入 -nodisplay
命令,在 linux 下也会出现同样的问题。
我的批处理行如下
matlab -nodisplay -automation -r "run('myfile.m')"-logfile output.txt -minimize
请帮帮我。
编辑:
我想我发现了我的问题问题是当我在 linux 下使用 -nodisplay
时命令 usejava('awt')
工作因为我的 java 环境被禁用,但是这不发生在windows下!为什么?
第二次编辑: 我想我找到了与我需要的非常相似的东西。
matlab -noawt -noFigureWindows -r "run('myfile.m')" -logfile output.txt -minimize
分析运行,什么也没说,但是MATLAB命令窗口仍然最小化打开..uhm 我宁愿打开任何东西!
我必须添加另一件事..nohup
从不等待并继续直到它到达脚本的末尾,但是使用任何其他批处理命令,例如 start
如果有是任何输入请求或“等待”它停止,直到有人提供输入!
最佳答案
未记录的 -noawt
选项将阻止 GUI 功能,但让 Java 运行。结合 -noFigureWindows
,正如您发现的那样,您应该拥有所需的东西。或者,您可以 turn off figure display via your M file与 set(0,'DefaultFigureVisible','off')
.
要查看 Java 是否实际加载,请运行 ver
或 version -java
.这是我用 -nojvm
看到的.
然后,使用 Windows 的 start /b /min MATLAB.exe ...
应该最小化启动它并且不保持命令窗口打开。
要使 MATLAB 不可见,请尝试使用微小的 NirCmd命令行工具如下,
nircmd.exe exec hide win64\MATLAB.exe -noawt -noFigureWindows -nosplash -minimize ...
我认为应该这样做,但是确保你开始真正的MATLAB.exe
在bin\<architecture>
文件夹,而不仅仅是 bin\matlab.exe
因为当它启动实际的 MATLAB.exe 时,它不会被隐藏。
关于windows - 如何在 Windows 平台上禁用 JVM 以运行后台 matlab 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466535/