2011-10-04 174 views
2

我有一个可执行文件,当双击打开命令行窗口时。 enter image description here调用命令行程序

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

问题是如何从mathematica前端做到这一点?通过RunThrough命令,我尝试着无济于事。

RunThrough["Executable Location", "sphere_15000"] 

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

UPDATE

找到了解决我的问题。

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

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

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

    润[ “\” \ “apame_win64.exe \” \ “输入\” \ “”]

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

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

下面是它在我的屏幕上的外观。 enter image description here

正如克里斯建议,如果我们在运行命令中使用最小化的控制台,我们会得到一个最小化的窗口,但程序不会执行。

enter image description here

我希望有一个解决方案。

BR

+4

Windows的一个问题是Run不能正确对待Run运行的问题(Run Run运行在Run运行时也是如此)其中包含空格的目录(实际上,这更多是底层Windows shell的问题)。我已经不止一次遇到这个问题,可能是你也遇到了这个问题。一般的解决方法是用引号包装路径。相关的MathGroup主题:http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/8c8a5c77ec25240c –

+0

非常感谢@LeonidShifrin。链接有很多帮助。 – PlatoManiac

+0

很高兴你发现它很有用。 –

回答

4

是的,你可以把文件夹的可执行你到Path变量,或者提供完整的路径名。

然而,RunThrough似乎已经被取代(在Windows上)被 导入[“!command”,“Text”],它将执行命令并以字符串的形式读取Matheamtica中的comaand行输出。 例如: -

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

-

否则,我也有使用网络链路在过去的好成绩(不知道WScript的。外壳 仍然在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 ] ]; 
+0

完成的。这在Windows 7上不起作用,但是谢谢你的时间。 – PlatoManiac

+0

它应该。我刚刚在Windows 7上运行了这个:Run2 [“C:\\ Windows \\ explorer.exe”],与Run [“start/min C:\\ Windows \\ explorer.exe”]相比,它看起来更平滑闪烁) –

3

是否可以从一个基本的命令窗口,而不是应用程序控制台运行带有输入您的应用程序?这可能是命令的形式,你将需要:

apame_win64 -input sphere_15000.inp 

或者干脆

apame_win64 sphere_15000.inp 

您可以通过运行apame_win64 -help

多部分命令可能检查可用交换机可以从运行Mathematica,例如

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

另外,还返回输出到数学会话:

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

我降落在这里想在Windows运行ABAQUS命令行。

这里提供的解决方案,制定了我(Windows 7中,数学9):

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

(这里ABAQUS选项ask_delete = OFF将覆盖现有的模拟结果和重定向>>所有输出到一个文件)

我认为,最小化窗口没有运行在你的情况下,因为可执行文件抛出打开该窗口。在这种情况下,this可能会有一些帮助