我写了一个简单的命令行c程序并使其可执行。 它应该将文件名作为输入并对文件执行一些操作。
我的任务是从dir /s /b *.c
命令获取输入并将其重定向到我的可执行文件Link.exe
。
我是这样尝试的:
dir /s /b *.c | Link.exe
但它不会这样。
如果我们在Link.exe文件的右侧提供文件名,它的唯一方法就是。
答案 0 :(得分:1)
您需要编写Linke.exe以便从stdin获取输入。例如,在C ++程序中就像:
#include <iostream>
#include <string>
int main() {
std::string s;
while(std::cin >> s)
std::cout << s << std::endl;
}
答案 1 :(得分:1)
由于Link.exe可以将文件名作为参数,因此可以通过dir
循环运行for
命令,并使用for变量作为Link.exe的参数
for /f %%A in ('dir /b /s *.c') do Link.exe "%%A"
请注意,如果您在命令行而不是批处理文件中运行此操作,则需要将%%A
替换为%A
答案 2 :(得分:-1)
您应该将其更改为
dir /s /b */c > Link.exe
注意在Windows中,它应该是有角度(大于)符号才能将输出流式传输到另一个程序。
要测试此功能,您可以像
一样运行样本测试dir > abc.txt
上述语句的输出将导致当前目录中的文件列表被附加到abc.txt中。