如何将标准输入重定向到Windows命令行中的文件?

时间:2012-05-30 20:59:07

标签: batch-file cmd stdin cat

在Unix上我会做类似的事情:

cat > file.txt

如何在Windows命令提示符或批处理文件中执行此操作?

编辑:基本上,我正在寻找没有参数的cat的功能(它从stdin读取并将其吐回到stdout)。

4 个答案:

答案 0 :(得分:21)

TYPE CON

CON是用于控制台输入的MS-DOS设备。您可以按如下方式重定向到文件:

TYPE CON>output.txt

要终止,请按 Ctrl + C Ctrl + Z 输入 Ctrl + Z = EOF)。

答案 1 :(得分:9)

如果您只想读取stdin并将您读到的内容写入stdout,那么FINDSTR可能会起作用,具体取决于您的使用方式。

只要输入在参数列表的末尾指定为单个文件名,FINDSTR就会输出输入的精确二进制图像。

findstr "^" file.txt

管道或重定向也可能有效,具体取决于输入的内容:

findstr "^" < file.txt
or
type file.txt | findstr "^"

如果在使用FINDSTR重定向或管道输入时发生以下任何情况,输出将被破坏:

  • 任何输入行&gt; 8191字节
  • 最后一行输入未被\ n终止。 (如果重定向输入,命令可能会挂起)

如果指定了多个输入文件,FINDSTR将无法工作,因为在这种情况下,该文件的名称将用作每行输出的前缀。

FINDSTR也与cat的不同之处在于它无法从stdin和命名文件中读取。

有关详细信息,请参阅What are the undocumented features and limitations of the Windows FINDSTR command?

答案 2 :(得分:4)

我认为more.exe可能正是您所寻找的。

它可以从控制台输入:

more > file1.txt

或从另一个TYPE CON 处理的文件中输入:

type file1.txt | more > file2.txt

more似乎在您的文件中附加换行符并展开标签页,因此不要在二进制数据上使用它!)

答案 3 :(得分:0)

标准输入:

批处理文件:

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

set /p MyVar=

echo %MyVar% > filename