运行批处理文件 MATLAB - DIANA TNO
Posted
技术标签:
【中文标题】运行批处理文件 MATLAB - DIANA TNO【英文标题】:Running a batch file MATLAB - DIANA TNO 【发布时间】:2016-08-06 21:04:27 【问题描述】:目前,我正在使用一个名为 DIANA 的有限元软件,我一直能够使用 MATLAB 执行批处理文件来运行“简单”模型。尽管如此,现在我开始使用更“复杂”的模型(只是更健壮,包含更多元素),但过程与我之前使用的过程完全相同。问题是现在我无法从 MATLAB 运行模型,它显然开始运行它,但突然停止。我正在使用下一个命令:
dos('path\filename.bat')
或
system(fullfile(path,'filename.bat' ))
这两行都执行 .bat 文件。我认为我的文件有问题,所以我查看了它们,但显然它们没有任何问题。然后我只是双击 .bat 文件,程序运行没有问题。然后我意识到问题不在于文件,而在于 MATLAB 的执行。既然您知道了问题的背景,您能否给我一些建议以避免 MATLAB 在内部“杀死”该进程?
MATLAB 中显示的执行轨迹:
diana: working directory is *CURRENT DIRECTORY NAME*
diana: input file is *FILENAME*.dat
diana: command file is *FILENAME*.dcf
diana: output file is *FILENAME*.out
diana: filos file is diana.ff
DIANA JOB 8028 finished
在批处理文件中直接双击的trace执行如下:
在上图中标注的文件中,包含模型的输出,直接从MATLAB执行时,没有出现,因为MATLAB之前完成了这个过程。
提前感谢您的任何回答!
Pd:我正在使用具有以下特性的计算机:Windows7、12 Gb RAM、OS 64 位、处理器 Intel Xeon 2.53 GHz。
【问题讨论】:
【参考方案1】:你所运行的并不严格等同于双击.bat文件,特别是因为当前目录不同,如果批处理文件需要访问辅助文件(相对路径),那么文件不会找到了。
尝试将此作为第一个命令添加到您的批处理文件中(或在 echo off 之后立即添加)
Cd /d %~dp0
【讨论】:
谢谢!让-弗朗索瓦·法布尔(Jean-François Fabre)回复!好吧,我明白你的意思,但实际上,我正在从 MATLAB 更改当前目录以避免你提到的内容。但是我尝试了您的建议,包括批处理文件中的行,如下所示: [rem === Diana Environment Setup === // call "C:\Program Files\Diana 10.0\dialogin.bat" // Cd /d %~dp0 // 戴安娜文件名]。但不幸的是,同样的问题仍在继续。 好的,然后可以在批处理文件的末尾添加pause
语句。如果它在 matlab 中失败,至少你会明白为什么。
这是我在 MATLAB 命令窗口中得到的: diana: 工作目录是 CURRENTDIRECTORY // diana: 输入文件是 FILENAME.dat // diana: 命令文件是 FILENAME.dcf // diana:输出文件为 FILENAME.out // diana: filos 文件为 diana.ff // DIANA JOB 8028 已完成 // 未报告任何问题。
我已经用执行跟踪编辑了您的帖子。随意接受/拒绝编辑,但最好是在您的问题中发布带有和不带有 matlab(直接双击)的执行跟踪。我可能会删除我的答案,因为它不能解决您的问题,在这种情况下,所有 cmets 也会被删除(而且它在问题中更具可读性!)
好吧,我们按照你的建议去做吧。【参考方案2】:
这是戴安娜支持团队提供的解决方案:
似乎 MATLAB 设置了一些环境符号来限制 每个线程的内存使用情况。
当您通过一个批处理文件从 Matlab 启动 Diana 时,该批处理文件会重置 符号一切正常。
这样的批处理文件可能如下所示:
rem === Diana Environment Setup === call "C:\Program Files\Diana 10.0\dialogin.bat" rem Unset the symbols added by MATLAB set KMP_STACKSIZE= set KMP_HANDLE_SIGNALS= set KMP_BLOCKTIME= rem start the diana job diana test2
【讨论】:
以上是关于运行批处理文件 MATLAB - DIANA TNO的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB问题解决方案- Matlab出现报错:‘***‘不是内部或外部命令,也不是可运行的程序或批处理文件