[問題] 請問如何使用批次檔或script執行由fort …

看板Fortran作者 (貓柳田博士)時間12年前 (2011/08/24 16:20), 編輯推噓4(4016)
留言20則, 5人參與, 最新討論串1/1
如題 小弟本人目前遇到的問題是這樣的... 假設有個執行檔的檔名為"abc.exe" 執行之後途中會有一些流程 分別是"輸入enter鍵" →"按1跟2選一個選項(假設按1)" →"輸入檔名1(假設檔名是text1.txt)" →"輸入檔名2(假設檔名是text2.txt)" →"輸入任意數字(假設按5)" →完成 所以我編寫了一個流程碼,如下 --------command.txt start---------- 1 text1.txt text2.txt 5 --------command.txt end------------ 取名叫command.txt(同時也存成command.bat做備份) 目前試了三種方法 法1 將command.txt的內容複製後 執行abc.exe 最後貼上 (有點像連推語法) 這個方法是成功了,不過有點蠢 因為如果一次要做很多事情的話,就要準備很多個很類似的txt檔 而且也無法使用迴圈 所以不考慮 法2 在cmd中,輸入abc.exe < command.txt 但是會出現這樣子的結果 forrtl: severe <24>: end-of-file during read, unit -4, file CONIN$ ------------------------------------------------------------------ 中間一堆東西 ------------------------------------------------------------------ Incrementally linked image--PC correlation disabled. 結果是無法執行 法3 在cmd中,輸入type command.txt | abc.exe 會出現這樣的結果 forrtl: 管道已結束。 forrtl: severe <39>: end-of-file during read, unit -4, file CONIN$ ------------------------------------------------------------------ 中間一堆東西 ------------------------------------------------------------------ Incrementally linked image--PC correlation disabled. 結果是無法執行 會在這邊問是因為後來循線找有關這兩個訊息時,發現是fortran的東西 所以請問各位大德 像這個時候該怎麼編寫script來執行該程式 附注: 該程式是由fortran所編寫,然後個人不知道sourse code 另外本人也沒有Fortran 能使用的只有cmd與matlab而已 先感謝各位大德的回答m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.132.84

08/24 19:32, , 1F
command.txt多加個空白行試試。
08/24 19:32, 1F

08/24 20:50, , 2F
我試過了...空白行再怎麼加好像都會出現這兩個訊息
08/24 20:50, 2F

08/24 20:51, , 3F
除非是我加錯位置了(我是加在最後一行)
08/24 20:51, 3F

08/25 12:23, , 4F
手上沒有windows機器可以試…
08/25 12:23, 4F

08/25 13:18, , 5F
我覺得我問題還蠻多的(←抱歉我不是資訊出生的)
08/25 13:18, 5F

08/25 13:19, , 6F
首先我現在還是不知道那兩個訊息的意思
08/25 13:19, 6F

08/25 13:19, , 7F
再來是file CONIN$,通常應該是給絕對路徑的檔名吧
08/25 13:19, 7F

08/25 13:20, , 8F
CONIN$是什麼意思...我還是不知道XD
08/25 13:20, 8F

08/25 13:49, , 9F
google了一下,那是console input device的意思
08/25 13:49, 9F

08/25 13:56, , 10F
跟stdin不同的是它只會看console的輸入,所以很可能這個
08/25 13:56, 10F

08/25 13:56, , 11F
程式不能用redirect XD
08/25 13:56, 11F

08/25 15:20, , 12F
我剛才用gfortran試了一下,用read(*,*)沒有問題,但是用
08/25 15:20, 12F

08/25 15:21, , 13F
open CONIN$的方式就不行了,還是要鍵盤輸入才有反應
08/25 15:21, 13F

08/25 15:22, , 14F
可是沒有出現op那個錯誤
08/25 15:22, 14F

08/25 22:47, , 15F
看來很棘手...如果知道鍵盤輸出時是什麼東西的話才有辦法
08/25 22:47, 15F

08/25 22:47, , 16F
讓執行檔自動執行?
08/25 22:47, 16F
對了... 那個要按ENTER的地方 在單獨執行執行檔時 畫面是顯示這個東西 Fortran Pause - Enter command<CR> or <CR> to continue. 不知道這個是不是也是一個很重要的資訊? ※ 編輯: shuntau 來自: 118.166.132.84 (08/25 22:55)

08/26 02:02, , 17F
要你"輸入<CR>"就是要你"按enter"。
08/26 02:02, 17F

08/26 11:40, , 18F
原來如此...
08/26 11:40, 18F
>open CONIN$的方式就不行了,還是要鍵盤輸入才有反應 不過試過一些方式,先把指令打好,然後再複製貼上的方法可行 所以我覺得應該還是有使用鍵盤輸入以外的方法吧... ※ 編輯: shuntau 來自: 118.166.130.158 (08/29 15:16)

08/29 20:29, , 19F
我想貼上也算是console input方法之一
08/29 20:29, 19F

09/18 03:10, , 20F
sendmessage
09/18 03:10, 20F
文章代碼(AID): #1ELBHfqH (Fortran)
文章代碼(AID): #1ELBHfqH (Fortran)