当前位置 博文首页 > CMD命令行管道命令使用介绍

    CMD命令行管道命令使用介绍

    作者:admin 时间:2021-01-30 18:03

    一、什么是管道命令

      管道命令能够将一个命令的执行结果经过筛选,只保留我们需要的信息。
      如 dir 命令会显示目录下所有文件夹和文件,可以使用管道命令| findstr "" 将dir的结果进行筛选,只保留需要的信息

    | 命令管道符

    格式:第一条命令 | 第二条命令 [| 第三条命令...]
    将第一条命令的结果作为第二条命令的参数来使用,记得在unix 中这种方式很常见。

    例如:

    dir c:\|find "txt"

    以上命令是:查找C:\所有,并发现TXT 字符串。

    FIND 的功能请用 FIND /? 自行查看

    在不使format 的自动格式化参数时,我是这样来自动格式化A 盘的
    echo y|format a: /s /q /v:system
    用过format 的都知道,再格盘时要输入y 来确认是否格盘,这个命令前加上echo y 并用|字符来将echo y
    的结果传给format 命令
    从而达到自动输入y 的目的
    (这条命令有危害性,测试时请慎重)

    最常用的输出y给后面的语句

    echo y|delete *.txt /s

    二、管道命令的使用

    1、Windows netstat 查看端口、进程占用

    // 假如我们需要确定谁占用了我们的9050端口
    
    C:/>netstat -aon|findstr "9050"
    TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2016
    // 看到了吗,端口被进程号为2016的进程占用,继续执行下面命令:
    C:/>tasklist|findstr "2016"
    tor.exe 2016 Console 0 16,064 K
    // 很清楚吧,tor.exe 占用了你的端口

    2、查看文件夹目录结构

    tree > list.txt

    tree /f >list.txt

    3、输入输出重定向

    echo -c // -c:不换行,linux下则是-n

    输入输出重定向:
        每执行一个命名,都会有3个与之相关的文件.标准输入文件,标准输出文件,错误输出文件.
        因为unix/linux下把任何一个设备都当作文件看待,所有实际上标准输入文件是键盘,
        标准输出和错误输出文件是屏幕.
    >      输出重定向
    <      输入重定向
    <<   输入追加
    >>   输入追加
    文件描述符:
        每一个文件可以用文件描述符来描述,系统提供12个,3-9可以任意定义.0-2系统定义如下:
    0  标准输入  键盘
    1  标准输出  显示器
    2  错误输出  显示器
    即可以用0-2代表上面的3个文件.
    例如:cmd>file     //cmd的输出重定向到file文件
         cmd>>file    //cmd的输出追加到file中,无则创建
         cmd 1>file   //把运行cmd的shell的标准输出重定向到file中,1代表标准输出
         cmd>file 2>&1  //把cmd的输出重定向到file,同时把2(错误输出)重定向到1(标准输出).
                                       2 > 1 则会把1当成文件,所有把错误定向到1必须使用&1.
         cmd 2>file    //把错误输出定向到file中
         cmd>>file 2>&1  //把错误和cmd输出追加到file中,cmd>>file,追加;2>&1,错误定向到
                                           标准输出,标准输入又追加到file中,所以错误和cmd输出都追加到file
         cmd 1>>file 2>&1  //可以把此命令等效于上一个命令
         cmdfile2   //cmd的输入是file1,结果输出到file2
         cmd<<END          //cmd使用标准输入,直到遇到END则退出.END可为任意一个字符
                                     理解:cmd使用默认的标准输入,运行,碰到END,则追加,但是标准输入输出
                                     不能追加,于是出错退出.
                                注:经试验理解不对,据linux shell编程25章的说法,
                               这是shell定的语法.可以直接理解成END为分隔符.
         cmd<&m          //把文件描述符m作为cmd的输入
         cmd>&m          //把文件描述符m作为cmd的输出
         cmd<&-          //关闭标准输入.
    !!!注意:
    1. 输入输出定向符前面不要加空格,否则容易出意想不到的问题
    2. 0 1 2不能使用>>或<<定向符,例: 2>>&1 出错

    使用管道符来自动输入y/n

    在工作中有时候调用cmd命令会出现提示信息,譬如使用pscp的时候会出现提示信息如下:
    Store key in cache?(y/n)
    每次都需要输入y或者n,如果是java或者python等调用cmd命令的时候,则会出现无法执行下去的情况,那么怎么办呢,可以使用管道符号来进行,譬如还是命令pscp,使用如下方法即可自动填入y:

    echo y |pscp ......

    后边的省略号是操作命令;
    其他语言调用也可以正常运行下去了  

    js
    下一篇:没有了