关于cmd命令的重定向输出

  • Post author:
  • Post category:其他


转自

jw72jw

命令通过

%>

的形式来定向输出,%表示文件描述符:



1

为标准输出stdout,

1>

简写为

>




2

为标准错误stderr。


&

需要直接与重定向符号结合使用。

比如:

2>&1

表示stderr输出到stdout

应用实例:

– 将结果输出到result.txt


net stop myservices >>result 2>&1


– 隐藏程序输出结果


net stop myservices >nul 2>nul

下表列出了可用于重定向输入和输出数据流的操作符。

重定向操作符 描述

>
将命令输出写入到文件或设备(如打印机)。

<
从文件而不是从键盘或句柄读入命令输入。

>>
将命令输出添加到文件末尾而不删除文件中已有的信息。

>&
将一个句柄的输出写入到另一个句柄的输入中。

<&
从一个句柄读取输入并将其写入到另一个句柄输出中。

|
从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。



重定向输入 (<)


要通过键盘将输入重定向到文件或设备,请使用 < 操作符。例如,要从 File.txt 获取 sort 命令的输入,请键入:

sort<file.txt

file.txt 的内容将以字母顺序列表的方式显示在命令提示符窗口中。



重定向输出 (>)


要将输出从命令提示符窗口重定向到文件或设备,请使用 > 操作符。可以在许多命令中使用该操作符。例如,要将 dir 输出重定向到 Dirlist.txt,请键入:

dir>dirlist.txt

  • 复制句柄


    重定向操作符 & 可以将输出或输入从一个指定句柄复制到另一个指定的句柄。例如,要将 dir 输出发送到 File.txt 并将错误输出发送到 File.txt,请键入:
dir>c:\file.txt 2>&1

复制句柄时,可以复制该句柄原状态的所有特性。

要将重定向输入操作符 (<) 与复制操作符 (&) 结合使用,指定的文件必须已经存在。

如果输入文件存在,Cmd.exe 将以只读方式打开该文件,然后将文件包含的字符作为输入发送到此命令(如同从键盘输入一样)。

要打开 File.txt,并在内容排序后将输出发送到命令提示符窗口(即 STDOUT),请键入: sort

ipconfig.exe>>output.log 2>&1


使用管道操作符 (|)


管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDOUT),然后将其定向到另一个命令的输入(默认情况下是 STDIN)中。

例如,使用下面的命令可以对目录进行分类:

dir | sort

在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。

sort 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。


合并带重定向操作符的命令


通过合并带有其他命令和文件名的筛选器命令,可以创建自定义命令。例如,可以使用以下命令存储包含“LOG”字符串的文件名:

dir /b | find "log" loglist.txt