定义一个新句柄(类似于STDOUT)

时间:2013-11-12 03:50:08

标签: batch-file stdout stdin

当我注意到这一点时,我正在考虑批量重定向句柄:

Table from wikipedia page

以下是link

它提到句柄3-9未定义,可以由程序定义。现在我已经读过在C#中执行此操作,但我想知道这是否可以在cmd / batch中使用 - 如果是,它的限制/使用是什么。

如果在cmd中不可能,我将如何使用它,并且它可以是将数据输出到屏幕并同时将其重定向到文件的解决方案(这是一个无法解决的问题)在同一时间合法地完成。)

谢谢,莫娜。

1 个答案:

答案 0 :(得分:6)

批处理文件仅限于管理两个文件:STDIN用于输入(SET / P)操作,STDOUT用于输出(ECHO等)操作;但是,我们可以在批处理文件中访问多个输入和输出文件。怎么做?以一种相对简单的方式:只需将其他文件连接到未使用的句柄(3-9),并使用输入中的适当句柄(SET / P<&#)或输出(ECHO>&#)命令。 / p>

下面的批处理文件将3个输入文件的行合并为一个带有更大行的输出文件:

@echo off
setlocal EnableDelayedExpansion
3<input2.txt 4<input3.txt (
for /F "delims=" %%a in (input1.txt) do (
   set line=
   rem Read from input2.txt (and write line from input1 to output.txt):
   set /P line=%%a <&3
   rem Read from input3.txt (and write line from input2 to output.txt):
   set /P line=!line! <&4
   rem Write line from input3 to output.txt:
   echo(!line!
)
) >output.txt

可以使用相同的方法生成多个输出文件。

请参阅:Access to SEVERAL files via Standard Handles

更具技术性的解释here