电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

>句柄句柄的数字代号BORDERRIGHT: #cccccc px solid>描述

STDIN

BORDERRIGHT: #cccccc px solid>

键盘输入

STDOUT

BORDERRIGHT: #cccccc px solid>

输出到命令提示符窗口

STDERR

BORDERRIGHT: #cccccc px solid>

错误输出到命令提示符窗口

UNDEFINED

BORDERRIGHT: #cccccc px solid>

句柄由应用程序单独定义它们是各个工具特有的

数字 代表前 个句柄可以使用命令 Cmdexe 运行程序并对该程序前 个句柄中的任何一个句柄进行重定向要指定要用的句柄请在重定向操作符之前键入该句柄的数字如果未定义句柄则默认的 < 重定向输入操作符是 而默认的 > 重定向输出操作符是 键入 < 或 > 操作符之后必须指定数据的读写位置可以指定文件名或其他现有的句柄

要指定重定向到现有句柄请使用与 (&) 字符后面接要重定向的句柄号(即 &句柄号例如下面的命令可以将句柄 (即 STDERR)重定向到句柄 (即 STDOUT)

>&

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

E cellSpacing= cellPadding=>

>重定向操作符BORDERRIGHT: #cccccc px solid>描述

>

BORDERRIGHT: #cccccc px solid>

将命令输出写入到文件或设备(如打印机)而不是命令提示符窗口或句柄

<

BORDERRIGHT: #cccccc px solid>

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

>>

BORDERRIGHT: #cccccc px solid>

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

>&

BORDERRIGHT: #cccccc px solid>

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

<&

BORDERRIGHT: #cccccc px solid>

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

|

BORDERRIGHT: #cccccc px solid>

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

默认情况下可以从键盘将命令输入(即 STDIN 句柄)发送到 Cmdexe然后由 Cmdexe 将命令输出(即 STDOUT 句柄)发送到命令提示符窗口

重定向输入 (<)

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

sort<filetxt

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

< 操作符可以打开具有只读访问权限的指定文件名因此不能在使用该操作符时向文件中写入信息例如如果以 <& 启动程序则所有试图读取句柄 的操作都将失败因为句柄 最初是以只写访问方式打开的

注意

cellPadding= border=>&#;

是 < 重定向输入操作符的默认句柄

重定向输出 (>)

几乎所有的命令都将输出发送到命令提示符窗口即使将输出发送到驱动器或打印机的命令也会在命令提示符窗口显示消息和提示

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

dir>dirlisttxt

如果 Dirlisttxt 不存在Cmdexe 将创建该文件如果 Dirlisttxt 存在Cmdexe 将使用 dir 命令的输出替换文件中的信息

要运行 netsh routing dump 命令然后将输出发送到 Routecfg请键入

netsh routing dump>c:\routecfg

> 操作符可以打开具有只写访问权限的指定文件因此不能使用该操作符读取文件例如如果使用重定向操作符 >& 启动程序则写入句柄 的所有尝试操作都将失败因为句柄 最初是以只读访问方式打开的

注意

cellPadding= border=>&#;

是 > 重定向输出操作符的默认句柄

复制句柄

重定向操作符 & 可以将输出或输入从一个指定句柄复制到另一个指定的句柄例如要将 dir 输出发送到 Filetxt 并将错误输出发送到 Filetxt请键入

dir>c:\filetxt >&

复制句柄时可以复制该句柄原状态的所有特性例如如果一个句柄具有只读访问的属性则该句柄的所有副本都具有只读访问属性不能将一个具有只读访问属性的句柄复制到另一个具有只写访问属性的句柄

使用 & 操作符重定向输入和副本

要将重定向输入操作符 (<) 与复制操作符 (&) 结合使用指定的文件必须已经存在如果输入文件存在Cmdexe 将以只读方式打开该文件然后将文件包含的字符作为输入发送到此命令(如同从键盘输入一样)如果指定了句柄Cmdexe 将指定的句柄复制到系统现有的句柄中

例如要以句柄 输入读取(即 STDIN)的方式打开 Filetxt请键入

<filetxt

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

sort<filetxt

要查找 Filetxt然后将句柄 (即 STDOUT)和句柄 (即 STDERR)重定向到 Searchtxt请键入

findfile filetxt>searchtxt <&

要以句柄 输入读取(即 STDIN)的方式复制用户定义的句柄 请键入

<&

使用 & 操作符重定向输出和复制

如果将输出重定向到文件且指定了现有的文件名Cmdexe 将以只写方式打开文件并覆盖该文件内容如果指定了句柄Cmdexe 将文件复制到现有句柄中

要将用户定义的句柄 复制到句柄 请键入

>&

要将包括句柄 (即 STDERR)的所有输出从 ipconfig 命令重定向到句柄 (即 STDOUT)然后将输出重定向到 Outputlog请键入

ipconfigexe>>outputlog >&

使用 >> 重定向操作符附加输出

要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息请使用两个连续的大于号(即 >>)例如使用下列命令可以将 dir 命令生成的目录列表附加到 Dirlisttxt 文件

dir>>dirlisttxt

要将 netstat 命令的输出附加到 Tcpinfotxt 的末尾请键入

netstat>>tcpinfotxt

使用管道操作符 (|)

管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDOUT)然后将其定向到另一个命令的输入(默认情况下是 STDIN)中例如使用下面的命令可以对目录进行分类

dir | sort

在本例中将同时启动两个命令但随后 sort 命令会暂停直到它接收到 dir 命令的输出为止sort 命令使用 dir 命令的输出作为输入然后将输出发送到句柄 (即 STDOUT)

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

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

dir /b | find log loglisttxt

dir 命令的输出是通过 find 筛选器命令进行发送的包含字符串LOG的文件名作为文件名列表(例如NetshConfiglogLogdatsvd 和 Mylogbat)存储在文件 Loglisttxt 中

要在相同命令中使用多个筛选器请使用管道 (|) 分隔筛选器例如下面的命令将搜索 C 盘上的每个目录以查找包含LOG字符串的文件名并且在命令提示符窗口中每次显示一屏

dir c:\ /s /b | find log | more

利用管道 (|) 可以对 Cmdexe 进行定向使其通过 find 筛选器命令发送 dir 命令输出find 命令只选择包含字符串LOG的文件名more 命令可以显示 find 命令选择的文件名(在命令提示符窗口中每次显示一屏)有关筛选器命令的详细信息请参阅使用筛选器

关于shell命令的定向输出 2&gt;&1


发布日期:2023/4/1
 

mycommand >mylogtxt >& 应该是最经典的用法了

命令的结果可以通过%>的形式来定向输出%表示文件描述符为标准输出stdout为标准错误stderr系统默认%值是也就是>>可以简写为>也就是默认为>stdout的默认目标是终端stderr的默认目标为也是终端我们在批处理中执行 echo text >resulttxt 我们就可以在屏幕上会看到 echo text >resulttxt 即是这个道理

其中&需要直接与重定向符号结合使用

参考

%>>%

ibrary/ServerHelp/aabdcdccebmspx?mfr=true

应用实例

将结果输出到resulttxt

net stop myservices >>result >&

隐藏程序输出结果

net stop myservices >nul >nul

微软关于重定向的文章 使用命令重定向操作符

更新日期 //

使用命令重定向操作符

可以使用重定向操作符将命令输入和输出数据流从默认位置重定向到其他位置输入或输出数据流的位置称为句柄

下表将列出可用的句柄

cellPadding=>

上一篇:用replace实现替换正在使用的文件

下一篇:shell grep 查找进程的小技巧