Command line 调用命令行程序
我有一个可执行文件,双击会在命令行窗口中打开 现在,在可执行文件apame_win64.exe所在的同一目录中有一个输入文件(即名为“sphere_15000.inp”)。因此,我们可以在命令行中插入文件名。 问题是如何从前端实现这一点?使用Command line 调用命令行程序,command-line,wolfram-mathematica,Command Line,Wolfram Mathematica,我有一个可执行文件,双击会在命令行窗口中打开 现在,在可执行文件apame_win64.exe所在的同一目录中有一个输入文件(即名为“sphere_15000.inp”)。因此,我们可以在命令行中插入文件名。 问题是如何从前端实现这一点?使用RunThrough命令,我尝试这样做,但没有成功 RunThrough["Executable Location", "sphere_15000"] 是否需要将此文件位置放入Windows 7环境路径变量中?希望在这方面有一些建议 更新 找到了解决我问
RunThrough
命令,我尝试这样做,但没有成功
RunThrough["Executable Location", "sphere_15000"]
是否需要将此文件位置放入Windows 7环境路径变量中?希望在这方面有一些建议
更新
找到了解决我问题的办法
BR是的,您可以将可执行文件的文件夹放入Path变量中,或者提供完整的路径名 然而,RunThrough似乎已经被(在Windows上)取代了 导入[“!command”,“Text”],它将执行命令并将COMA和行输出作为字符串读取到Mathematica中。 例如:
您是否可以使用基本命令窗口而不是应用程序控制台的输入来运行应用程序?这可能是您需要的命令形式:
apame_win64 -input sphere_15000.inp
或者干脆
apame_win64 sphere_15000.inp
您可能可以通过运行apame\u win64-help
可以从Mathematica运行多部分命令,例如
Run["type c:\\temp\\test.txt"]
或者,也可以将输出返回到Mathematica会话:
ReadList["!type c:\\temp\\test.txt", String]
我来到这里是想在windows上运行abaqus命令行 这里提供的解决方案对我来说是可行的(Windows 7,Mathematica 9):
SetDirectory@path;
运行[“开始/min abaqus job=“fileName”交互式询问\u delete=OFF>>log.txt”]
(此处abaqus选项ask_delete=OFF覆盖现有模拟结果,>>将所有输出重定向到一个文件)
我认为,在您的案例中,最小化窗口没有运行,因为可执行文件会打开该窗口。在这种情况下,可能会有一些帮助Windows的
运行
(在运行
之上实现的运行
)的一个问题是它无法正确处理其中包含空格的目录(实际上,这更像是底层Windows shell的问题)。我不止一次遇到这个问题,可能是你也遇到了这个问题。通常的解决方法是将路径用引号括起来。相关MathGroup线程:非常感谢@LeonidShifrin。这个链接很有帮助。@Plato,试着运行运行[“start/min\”\“apame\u win64.exe\”\“input\”\][/code>运行最小化,或者甚至运行运行[“cmd/c start/min\”\“apame\u win64.exe\”input\”]
-ref:@ChrisDegnen在这种情况下不起作用。控制台马上就来了,没有执行外部程序。@Plato-问题似乎是引号。你确定你都需要吗。文件名中没有任何空格。看看这是否有效:Run[“start/min apame\u win64 input”]
它应该运行。我刚刚在Windows 7:Run2[“C:\\Windows\\explorer.exe”]上尝试了此操作,与运行[“start/min C:\\Windows\\explorer.exe”]相比,它看起来更平滑(没有闪烁)
Run["type c:\\temp\\test.txt"]
ReadList["!type c:\\temp\\test.txt", String]
SetDirectory@path;
Run["start /min abaqus job=" <> fileName <> " interactive ask_delete=OFF >> log.txt"]