2013-04-05 40 views
0

可能是基本的問題,但無論我找不到答案,或者我不知道用什麼詞來搜索它們。MS DOS命令提示符 - 在一個命令中提供幾個輸入文件名

我有一個命令行程序,在調用.exe後接受三個文件名。我還有一個專門用來運行這個程序並自動測試輸出的程序。所以情況是我正在運行一個程序,並且需要給它指示如何運行另一個程序。通過程序的約束,我需要提供一個將執行模型的單行命令。 我的問題是:如何在MS DOS命令提示符下,我可以1)執行程序和2)在一個命令中提供三個已知的文件名。

謝謝!

更多上下文: 這兩個程序不是我自己寫的,而是兩個命令行可執行文件。 「第一個」程序是一個通過命令提示符運行的簡單模型。第二個是校準程序,需要運行該模型(可能數百次)來校準某些輸入參數。因此我需要告訴校準程序如何運行模型。不過,我需要在一行或批處理文件中執行此操作。

+0

你的第二個程序 - 應該運行第一個程序的程序 - 它寫的是什麼? – zmbq 2013-04-05 19:18:01

+0

聽起來像你需要使用命令行參數。但這並不明確,您通常會如何向程序提供指令(而不是通過命令行)? – 2013-04-05 19:20:06

+0

zmbq:這兩個程序都以可執行文件的形式提供給我,第二個程序我不確定,但我知道第一個程序是用FORTRAN編寫的 lc:這兩個程序都是命令行程序。如果我僅運行第一個程序(而不是第二個程序自動運行),那麼信息(在本例中爲文件名)將作爲用戶直接從命令提示符輸入提供。即當I(或自動化程序)從其執行的.exe調用第一個程序時,然後在命令行中顯示命令「輸入控制文件名」。用戶然後輸入指定的文件名。這重複了三次。 – 2013-04-05 20:26:14

回答

0

,我相信你是什麼在呼喚後「管道」。一個程序的輸出被輸入另一個程序的輸入。這在一個命令行中表示。

例如,dir會產生一系列的行,並且sort會讀取行,對它們進行排序並將它們寫出。所以,

dir | sort

可以通過管道將盡可能多的項目一起,只要你喜歡,並通過他們所需要的任何參數。

dir | find "2013" | sort

編輯: 更新根據您的意見。

如果第二個程序剛剛讀取第一個的輸出,那麼你可以這樣做。

first <filelist.txt | second

其中Filelist.txt中是由first程序所需的三個響應的文本文件。 <意味着first不會讀取鍵入的內容,而是從文件讀取。

+0

優秀!我試圖在過去列出這樣的三個文件: 第一<1.txt <2.txt <3.txt 它不會工作。然而,這個文件列表的想法完美。謝謝! – 2013-04-05 20:55:56

0

,我認爲這會工作

C:\>program.exe "file1" "file2" "file3" 
+0

由於某些原因,它仍然不會傳遞文件名。輸入這樣一行,程序仍然暫停等待輸入在第一個提示 – 2013-04-05 20:01:52

+0

你可以提供一些源代碼 – tsanchev 2013-04-05 20:16:33

+0

不幸的是,我不能提供源,因爲這些程序都提供給我作爲可執行文件,我會嘗試澄清我的帖子與屏幕捕捉和更多的描述上面。 – 2013-04-05 20:30:44