转自
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