运行批处理文件 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 怎样运行m文件?

服务守护DOS脚本

MATLAB问题解决方案- Matlab出现报错:​‘***‘不是内部或外部命令,也不是可运行的程序或批处理文件

MATLAB问题解决方案- Matlab出现报错:​‘***‘不是内部或外部命令,也不是可运行的程序或批处理文件

如何逐步在批处理文件中运行for循环

关于MATLAB处理大数据坐标文件