批处理\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
-
d 使用默认
1.cmd > log.txt
输出log.txt:
test`log.txt` 只包含了正常的消息内容, 屏幕上输出了错误信息: >'check.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
-
使用
1.cmd 1> log.txt
输出log.txt :
test
同上,`log.txt` 同样包含了正常的消息内容,屏幕上输出了错误消息。 说明,默认的`>` 与 `1>` 相同。
-
使用
test.cmd 2> log.txt
输出log.txt :
'check.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
`log.txt` 只输出了异常的消息内容,屏幕输出了正常的消息。
-
使用
test.cmd > log.txt 1>&2
输出log.txt :
`log.txt`的内容为空白或者没有这个文件,屏幕上输出了正常与错误的消息。 这行命令的作用是将`stdout`当作`stderr`处理,并把`stdout`输出到`log.txt` 所以`stdout`和`stderr`显示在了屏幕上,`log.txt`为空白或者没有这个文件
-
使用
test.cmd 2> log.txt 1>&2
输出log.txt :
`log.txt`的内容为空白或者没有这个文件,屏幕上输出了正常与错误的消息。 这行命令的作用是将`stdout`当作`stderr`处理,并把`stdout`输出到`log.txt` 所以`stdout`显示在了屏幕上,`log.txt`为空白或者没有这个文件。