调用命令行程序

时间:2011-10-04 08:05:58

标签: command-line wolfram-mathematica

我有一个可执行文件,双击时会在命令行窗口中打开。enter image description here

现在,在可执行文件apame_win64.exe所在的同一目录中有一个输入文件(即名为“sphere_15000.inp”)。所以我们可以在命令行中输入文件名。 enter image description here

问题是如何从mathematica前端完成这项工作?使用RunThrough命令,我尝试无效。

RunThrough["Executable Location", "sphere_15000"]

我是否需要将此文件位置放在Windows 7环境路径变量中?希望在这方面有一些建议。

更新

找到解决我问题的方法。

  1. 首先将Mathematica目录设置为可执行文件所在的文件夹。

    path =“C:\ Users \ FlowCrusher \ Desktop \ CUSP solver \ Apame_build_2011_01_09 \ solver”; SetDirectory [路径];

  2. 然后使用以下输入方式。

    运行[“\”\“apame_win64.exe \”\“input \”\“”“

  3. 这里“apame_win64.exe”是想要运行的可执行文件,“input”是可执行文件的输入文件。这解决了这个问题。但愿望清单中的新项目。

    有没有办法在后台隐藏控制台窗口?

    以下是我在屏幕上的显示效果。 enter image description here

    正如Chris所说,如果我们在Run命令中使用最小化控制台,我们会得到一个最小化窗口,但程序不会执行。

    enter image description here

    我希望有一个解决方案。

    BR

3 个答案:

答案 0 :(得分:4)

是的,您可以将可执行文件夹放入Path变量中,或提供完整路径名。

但是,RunThrough似乎已被取代(在Windows上) 导入[“!command”,“Text”],它将执行命令并将comaand行输出作为字符串读入Matheamtica。 E.g:

Export["testit.txt", "bla", "Text"];
Import["!dir" <> " testit* > dir.log", "Text"];
FilePrint["dir.log"]

-

否则,我在过去使用NETLink也有很好的结果(不确定是否是WScript.shell 仍然适用于Windows7 / 8或者如果应该使用其他东西)。 模拟运行(我认为不需要RunThrough):

Run2[cmd_String] := Module[{shell},
    Switch[$OperatingSystem,
        "Windows",
            Needs["NETLink`"];
            shell = NETLink`CreateCOMObject["WScript.shell"];
            shell @ run[cmd,0,True],
        "Unix",
            Run @ cmd, 
        "MacOSX",
            Run @ cmd ] ];

答案 1 :(得分:3)

您可以使用基本命令窗口而不是应用程序控制台的输入来运行应用程序吗?这可能是您需要的命令形式:

apame_win64 -input sphere_15000.inp

或只是

apame_win64 sphere_15000.inp

您可以通过运行apame_win64 -help

来检查可用的开关

可以从Mathematica运行多部分命令,例如

Run["type c:\\temp\\test.txt"]

或者,也将输出返回到Mathematica会话:

ReadList["!type c:\\temp\\test.txt", String]

答案 2 :(得分:0)

我在这里想要在Windows上运行abaqus命令行

此处提供的解决方案为我制定了(Windows 7,Mathematica 9):

SetDirectory@path;
Run["start /min abaqus job=" <> fileName <> " interactive  ask_delete=OFF >> log.txt"]

(这里abaqus选项ask_delete = OFF覆盖现有模拟结果,&gt;&gt;将所有输出重定向到文件)

我认为,由于可执行文件会打开该窗口,因此最小化窗口不会在您的情况下运行。在这种情况下,this可能会有所帮助