关于cmd 命令的重定向输出 2>&1

mycommand >mylog.txt 2>&1

应该是最经典的用法了。

命令的结果可以通过“ %> ”的形式来定向输出, % 表示文件描述符:1 为标准输出 stdout 、 2 为标准错误stderr 。系统默认 % 值是1 ,也就是 “ 1> ”,而 1> 可以简写为 > ,也就是默认为 > 。stdout 的默认目标是终端,stderr 的默认目标为也是终端。

我们在批处理中执行:

echo text >result.txt

我们就可以在屏幕上会看到 echo text 1>result.txt ,即是这个道理。

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

应用实例:

1、 将结果输出到result.txt

net stop myservices >>result 2>&1

2、 隐藏程序输出结果

net stop myservices >nul 2>nul

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

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

下表将列出可用的句柄。

句柄            句柄的数字代号            描述 

     STDIN                  0                       键盘输入 

     STDOUT              1                       输出到命令提示符窗口 

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

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

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

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

2>&1

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



     重定向操作符          描述 

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

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

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

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

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

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

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

重定向输入 (<) 

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

sort<file.txt

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

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

注意 : 0 是 < 重定向输入操作符的默认句柄。

重定向输出 (>) 

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

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

dir>dirlist.txt

如果 Dirlist.txt 不存在, Cmd.exe 将创建该文件。如果 Dirlist.txt 存在, Cmd.exe 将使用 dir 命令的输出替换文件中的信息。

要运行 netsh routing dump 命令,然后将输出发送到 Route.cfg ,请键入:

netsh routing dump>c:/route.cfg

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

注意 : 1 是 > 重定向输出操作符的默认句柄。

复制句柄 

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

dir>c:/file.txt 2>&1

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

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

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

例如,要以句柄 0 输入读取(即 STDIN )的方式打开 File.txt ,请键入:

<file.txt

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

sort<file.txt

要查找 File.txt ,然后将句柄 1 (即 STDOUT )和句柄 2 (即 STDERR )重定向到 Search.txt ,请键入:

findfile file.txt>search.txt 2<&1

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

<&3

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

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

要将用户定义的句柄 3 复制到句柄 1 ,请键入:

>&3

要将包括句柄 2 (即 STDERR )的所有输出从 ipconfig 命令重定向到句柄 1 (即 STDOUT ),然后将输出重定向到 Output.log ,请键入:

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

cmd 重定向的更多相关文章

  1. Cmd重定向

    1.执行单条cmd命令 public static string ExecuteCmd(string command) { Process p = new Process(); p.StartInfo ...

  2. <编程>比较两种素数表生成算法+计算程序运行时间+通过CMD重定向测试程序

    最近学习加密算法,需要生成素数表,一开始使用简单的循环,从2开始判断.代码如下: #include<iostream> #include<cstdio> #include< ...

  3. Windows 常用Cmd命令行 (持续更新...)

    查看IP ipconfig 查看WIFI密码 netsh wlan show profiles wifi_name key = clear 系统探针 systeminfo CMD重定向 输出符号> ...

  4. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  5. NetCat使用手册

    简介:   在网络工具中有“瑞士军刀”美誉的NetCat(以下简称nc),在我们用了N年了至今仍是爱不释手.因为它短小精悍(这个用在它身上很适合,现在有人已经将其修改成大约10K左右,而且功能不减少) ...

  6. IPC$命令详解

    一 摘要二 什么是ipc$三 什么是空会话四 空会话可以做什么五 ipc$所使用的端口六 ipc管道在hack攻击中的意义七 ipc$连接失败的常见原因八 复制文件失败的原因九 关于at命令和xp对i ...

  7. 445port入侵具体解释

    445port入侵具体解释   关于"445port入侵"的内容445port入侵具体解释本站搜索很多其它关于"445port入侵"的内容 445port入侵, ...

  8. 445port入侵详细解释

    445port入侵具体解释   关于"445port入侵"的内容445port入侵具体解释本站搜索很多其它关于"445port入侵"的内容 445port入侵, ...

  9. 空连接ipc$入侵

    使用命令 net use url=file://\\IP\ipc$\\IP\ipc$ "" /user:"" 就可以简单地和目标建立一个空连接(需要目标开放ip ...

随机推荐

  1. 【C++】递归 课后习题3-13、3-14

    // // main.cpp // 3-13递归Fibonacci级数 // // Created by T.P on 2018/3/21. // Copyright © 2018年 T.P. All ...

  2. 「洛谷P1231」教辅的组成 解题报告

    P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...

  3. 通过自己实现接口来加深理解SpringMVC的执行流程

    功能介绍 上篇文章[从源码角度了解SpringMVC的执行流程]通过接口源码向大家介绍了SpringMVC的执行流程,主要偏重于源码.这篇文件我们来自己实现那几个关键接口,来真实体验下SpringMV ...

  4. git与github的简单使用教程

    git与github的简单使用教程 一.创建仓库 点击new,进入创建仓库页面 对将要创建的仓库进行一些简单的设置 最后再点击create repository就可以了. 到这我们就创建好了一个仓库. ...

  5. Java入门 - 面向对象 - 06.接口

    原文地址:http://www.work100.net/training/java-interface.html 更多教程:光束云 - 免费课程 接口 序号 文内章节 视频 1 概述 2 接口的声明 ...

  6. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地

    . 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地 本文来自异数OS社区 github: https://github.com/yds086/Here ...

  7. 【模板】2-SAT问题

    问题简述 有 \(n\) 个变量,每个变量可赋为 \(1\) 或 \(0\) 必须满足一些限制条件,如" \(a\) 为1 或 \(b\) 为0 " " \(a\) 为0 ...

  8. 玩转Django2.0---Django笔记建站基础六(模型与数据库)

    第六章 模型与数据库 Django对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite和Oracle,而且为这些数据库提供了统一的调用API,这些API统称为ORM框架. ...

  9. set(待整理)

    set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...

  10. 【WPF学习】第二十五章 日期控件

    WPF包含两个日期控件:Calender和DatePicker.这两个控件都被设计为允许用户选择日期. Calendar控件显示日期,在与Windows操作系统中看到的日历(例如,当配置系统日期时看到 ...