【问题标题】:Define a new handle (Similar to STDOUT)定义一个新句柄(类似于 STDOUT)
【发布时间】:2013-11-12 03:50:08
【问题描述】:

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

这里是link

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

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

谢谢,莫娜。

【问题讨论】:

标签: batch-file stdout stdin


【解决方案1】:

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

【讨论】:

  • 太棒了,非常感谢!
  • 其实,我可以用它在接受输入的同时将数据输出到控制台吗?
  • 是的。只需使用重定向到/来自CON: echo This always go to console &gt; CON
  • ...以防“这里”有时移动:foolproof counting of arguments - Page 3 - DosTips.com
  • @Wolf: 恐怕我不关注你了... DosTips.com 网站上的帖子都有编号,这些数字永远不会改变!在“这里”链接的情况下,我的回答和您的评论中的主题和回复编号都是t=2836&amp;p=29634#p29634,因此您的评论完全没有必要......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2011-05-30
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多