使用dos()执行批处理文件

时间:2014-09-15 15:21:51

标签: matlab batch-file licensing dos

通过matlab执行批处理文件命令时遇到问题。此批处理文件包含在Adams中运行模拟的命令。当我直接从DOS窗口执行批处理文件时,它运行良好。但是如果我使用matlab来执行它(使用命令dos()),它会给出“无法检查Adams许可证”的错误。

这让我感到困惑:如果许可证不正确,无论我直接在DOS中执行批处理文件还是要求MATLAB执行它,它都不应该工作。我还尝试使用dos()通过matlab执行其他DOS命令,但效果很好。

有谁知道问题可能是什么?

1 个答案:

答案 0 :(得分:0)

这些问题通常是由MATLAB更改或清除的某些环境变量引起的。我在Linux和Mac OS X上有非常相似的经历,这会在使用systemunix时造成严重破坏。

在类Unix系统中,MATLAB是从shell脚本启动的,所有这些都发生在shell脚本中。因此,您可以在那里或在主目录中的.matlab7rc.sh中包含缺少的变量(后者在升级MATLAB时保留,并且更容易使用)。我不会在这里详细介绍所有的Unix细节。 另一种解决方法是在发出system命令时明确设置这些变量(例如system('export variable=value ; ...'))。这是相当多的工作,但您可以轻松地在不同的计算机上使用该MATLAB代码。

在Windows上,我不完全确定相应文件的确切位置(以及MATLAB是否以与Unix上类似的方式启动)。但如果它们存在,您可以在MATLAB文档中找到它。 无论如何,替代修复也应该在这里工作。

首先,您需要诊断所需的系统变量(可能是PATH或任何与Adams相关的名称)。 要在Windows中执行此操作,请从Windows命令提示符(set)和MATLAB中运行cmd.exe。无论输出的不同,都可能怀疑您的问题。 要仅检查单个变量,可以使用命令echo %variablename%

我将假设您发现suspect环境变量已丢失且应设置为value

然后,解决方法修复程序在MATLAB中以system('set suspect=value & ...')运行您的命令,并用原始命令替换...