2011-10-04 162 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可能會有一些幫助