2012-05-30 39 views
9

在Unix上我会做这样的事情:如何将标准输入重定向到Windows命令行中的文件?

cat > file.txt 

我怎样才能做到这一点在Windows命令提示符或批处理文件?

编辑:基本上,我正在寻找的cat不带参数(从标准输入读取和吐回了到标准输出)功能。

+1

'type thisfile> output.txt'将所有输出与unix cat'输入thisfile >> output.txt'将所有输出附加到文件中,而不会覆盖 – Kyle

+0

+1,因为使用'type'这样一个很酷且简单的解决方案。 –

+0

@DominicP除了它不适合我的目的(在“编辑:”之后阅读) – Matt

回答

16

TYPE CON

CON为控制台输入的MS-DOS设备。您可以重定向到一个文件,如下所示:

TYPE CON>output.txt

要终止,打按Ctrl + ç按Ctrl + ž输入按Ctrl + ž = EOF)。

+0

过了一年太晚了,但最后还是一个非解决方法的答案!谢谢! – Matt

+1

啊哈哈!虽然我猜...对于其他人可能是有用的......我可能是我这个年龄段唯一知道将MS-DOS变成打字机的优雅'TYPE CON> LPT1'快捷键的人! –

+1

很多* nix命令的Windows替代品确实存在 - 但它们是“进化的”,而不是像bash那样智能地设计,所以它们有点难以找到,并且使用起来往往要复杂得多。这种差异的例子是bash backtick与DOS中等价的'FOR'构造。感谢天堂的Powershell和C#脚本! –

0

标准输入:

批处理文件:

:: set /p MyVar= Prompts user for stdin information 

set /p MyVar= 

echo %MyVar% > filename 
+0

这将不得不首先阅读标准输入的整体,但是,不是吗?如果stdin非常大,这似乎是不切实际的。 – Matt

8

如果你想要的是读取标准输入,写你读到stdout,然后将FINDSTR工作。

findstr "^" 

您可以通过重定向或管道提供stdin。

FINDSTR "^"与cat非常相似,因为它会在不修改的情况下输出确切的二进制输入。

如果指定单个输入文件也与cat相同。

findstr "^" fileName 

再次输出将是一个确切的二进制副本。

如果指定了多个输入文件,则功能发散,因为在这种情况下,文件的名称将用作每行输出的前缀。

它也不同于猫,它不能从标准输入和命名文件中读取。

编辑
注意FINDSTR将追加结束线条标记<CR><LF>到管道输入如果输入流的最后一个字符不是<LF>。这是FINDSTR的功能,而不是Windows管道机制。 FINDSTR不会附加<CR><LF>重定向输入。如果读取重定向输入并且最后一行不以<LF>结尾,则FINDSTR将无限期地挂在XP和Windows 7上。有关更多信息,请参见What are the undocumented features and limitations of the Windows FINDSTR command?

+0

编辑 - 更正了关于附加了CR/LF的管道输入的信息。增加了关于XP和Windows 7的信息,可能与重定向输入挂起 – dbenham

+0

谢谢你的回答!对于那里的其他人来说,写入(附加)stdin到文件“foo.txt”的批处理文件是: findstr“^”>> foo.txt –

4

我认为more.exe可能是你在找什么。

它既可以从控制台接受输入:

more > file1.txt 

或者从另一个文件中的管道,其中TYPE CON手柄:

type file1.txt | more > file2.txt 

more似乎追加一个换行符到你的文件并扩展选项卡,所以不要在二进制数据上使用它!)

+0

其实这个帮了我多条线的时候。谢谢 – TheGameiswar

相关问题