【问题标题】:Execute batch file using dos()使用 dos() 执行批处理文件
【发布时间】:2014-11-09 04:23:17
【问题描述】:

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

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

有人知道问题出在哪里吗?

【问题讨论】:

  • 什么是亚当斯?当您尝试使用 Matlab 时,您如何知道许可证可用?
  • Adams 是我用来模拟的软件。使用批处理文件我可以自动开始模拟。如果模拟有效,则表示许可证没问题。就我而言,许​​可证确实可用。否则在 DOS 中执行批处理文件时将无法正常工作。
  • 这可能是当前目录不是 Adams 的问题吗?尝试将cd [whereverAdamsIs] 添加到批处理文件的顶部。
  • 感谢您的回答。在测试中,我已经将 cd 添加到了 Adams 文件的目录中。所以当前目录没有问题。

标签: matlab batch-file licensing dos


【解决方案1】:

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

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

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

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

我假设你已经发现suspect 环境变量丢失了,应该设置为value

解决方法是在 MATLAB 中以 system('set suspect=value & ...') 的身份运行您的命令,在其中将 ... 替换为您的原始命令。

【讨论】:

  • 非常感谢!问题已经解决了!我从计算机设置中检查了 Adams 的系统变量。我发现 DOS 给出了真实值,但 MATLAB 给出了不同的值。我通过 MATLAB 对其进行了更改,现在它可以工作了!非常感谢您的帮助:)
猜你喜欢
  • 2010-10-17
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 2012-09-29
  • 2010-09-13
  • 1970-01-01
  • 2015-10-27
  • 2012-07-28
相关资源
最近更新 更多