cmd.exe重定向运算符的顺序和位置

海梅(Haime Hablutzel)

首先关于顺序

以下工作将重定向stdoutstrerrnul

command 1>nul 2>&1

以下不

command 2>&1 1>nul

为什么顺序很重要?如何用人类可以理解的语言来阅读这些表达?

关于位置

这有效

command 1>nul 2>&1

这也是

1>nul 2>&1 command

为什么?任何有关语法规则的官方参考文档都将有所帮助。

MC ND

command 2>&1 1>nul不起作用是不正确的。有用。但是像往常一样,它会执行您所要的而不是您想要的

从左到右:

  • 2>&1流2(stderr)的数据将发送到流1(stdout)使用的句柄副本/副本

  • 1>nul流1的数据将发送到nul

副本是关键。数据不发送到任何流1指向的位置,而是发送到流句柄副本重定向流1时,流2具有自己的句柄,即先前流1的副本。更改流1不会影响流2。

现在,让我们从左到右查看工作代码

  • 1>nul 将流1中的句柄设置为指向nul

  • 2>&1 将流2中的句柄设置为流1中正在使用的句柄的副本,即 nul

关于位置

在大多数情况下,位置(命令之前,命令之后或两者均无关)是不相关的。要执行命令,解析器必须首先准备该命令将使用的流。如果rem在开始执行命令之前认为有必要(尝试重定向命令输入或输出),则可以进行此准备

唯一有区别的情况是,我们想从命令中获取的内容与解析器了解的内容不同。一种明显的情况是,当我们需要输出带有结尾数字的字符串时。编码为

echo 1 2 3>file 

不会将完整的字符串发送到目标文件。1 2将回显到控制台,并将写入流3的数据(此命令中的任何内容)都发送到file

当然,可以在数据的末尾(3之间>添加一个空格,但是该空格将包含在输出中。如果这是不可接受的,解决方案是将重定向放置在命令的开头

>file echo 1 2 3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

posix标准输入重定向的位置(<in cmd vs cmd <in)

来自分类Dev

在cmd for循环中重定向

来自分类Dev

os.system(cmd)中的重定向操作符<和>

来自分类Dev

&&运算符无法在CMD中执行gawk命令

来自分类Dev

Windows cmd (.bat) 中的嵌套运算符

来自分类Dev

Shell的控制和重定向运算符是什么?

来自分类Dev

重定向运算符,标准输入和命令参数

来自分类Dev

Windows CMD批处理,START和输出重定向

来自分类Dev

Haskell exe。文件和cmd

来自分类Dev

从.exe输出到cmd

来自分类Dev

cmd.exe的多个版本和设置位置?

来自分类Dev

Linux重定向:<<运算符

来自分类Dev

Python argv和cmd

来自分类Dev

查找cmd.exe文件的位置

来自分类Dev

Windows cmd:为什么指定输出重定向的顺序很重要?

来自分类Dev

与&&运算符一起使用的CMD中的gawk命令不起作用

来自分类Dev

CMD:不能使用 += 运算符将 1 添加到 08

来自分类Dev

如何防止来自'&'和'>'运算符的输出(发送给后台运算符和重定向运算符)

来自分类Dev

如何防止来自'&'和'>'运算符的输出(发送给后台运算符和重定向运算符)

来自分类Dev

从PowerShell运行cmd.exe

来自分类Dev

修复损坏的 cmd.exe

来自分类Dev

Windows cmd在执行cmd.exe时卡住

来自分类Dev

'cmd1 |之间的区别 cmd2'和'cmd2 <(cmd1)'和'mkfifo foo; cmd1> foo; cmd2 foo'?

来自分类Dev

括号和赋值运算符顺序

来自分类Dev

在 cmd 提示符下使用管道运行 PowerShell cmd

来自分类Dev

CMD设置/ a,模数和负数

来自分类Dev

cmd并行执行和终止

来自分类Dev

Windows .cmd标准输出-多重重定向

来自分类Dev

cmd重定向:等同于bash exec> file