批处理\DOS中输入输出流

批处理\DOS中输入输出流

🍘标准输入输出

DOS使用三个通用的“文件流”来进行输入,输出文本信息或者错误信息。程序或者脚本使用标准输入文件(stdin)读取内容,标准输出(stdout)输出文件或者打印文本到屏幕上,标准错误(stderr)输出错误信息到屏幕上。

这三个标准文件(也称为标准流)使用数字 0,1,2 进行标记。标准输入是0,标准输出是1,标准错误是2。下文中的文件流重定向会用到这

三个数字。

🍳操作符解释

> 操作符会覆盖目标文件的内容, >> 操作符则是将内容追加至文件末

默认情况下,>>> 是将标准输出重定向。 也可以在操作符前加上 2 (注意没有空格) 来重定向标准错误

也可以通过>&运算符,将标准输出、错误相互转换。 例如,将标准输出转为异常来输出到error.txt

Some.exe 2> error.txt 1>&2

举个例子看下,我们先创建个1.cmd

@echo off

echo test

check.exe
  1. d 使用默认1.cmd > log.txt输出

    log.txt:
    test

    `log.txt` 只包含了正常的消息内容, 屏幕上输出了错误信息:
    >'check.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    
  2. 使用1.cmd 1> log.txt输出

    log.txt :

    test

    同上,`log.txt` 同样包含了正常的消息内容,屏幕上输出了错误消息。 说明,默认的`>` 与 `1>` 相同。
    
  3. 使用 test.cmd 2> log.txt 输出

    log.txt :

    'check.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。

    `log.txt` 只输出了异常的消息内容,屏幕输出了正常的消息。
    
  4. 使用 test.cmd > log.txt 1>&2 输出

    log.txt :

    `log.txt`的内容为空白或者没有这个文件,屏幕上输出了正常与错误的消息。
    这行命令的作用是将`stdout`当作`stderr`处理,并把`stdout`输出到`log.txt`
    所以`stdout`和`stderr`显示在了屏幕上,`log.txt`为空白或者没有这个文件
    
  5. 使用test.cmd 2> log.txt 1>&2输出

    log.txt :

    `log.txt`的内容为空白或者没有这个文件,屏幕上输出了正常与错误的消息。
    这行命令的作用是将`stdout`当作`stderr`处理,并把`stdout`输出到`log.txt`
    所以`stdout`显示在了屏幕上,`log.txt`为空白或者没有这个文件。
    
posted @ 2022-03-31 15:09  月满年  阅读(170)  评论(0编辑  收藏  举报