2013-04-05 36 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