在键盘输入、屏幕上打印文本以及在屏幕上打印错误时,有三个通用的“文件”。
称为 stdin 的“标准输入”文件包含程序/脚本的输入。称为 stdout 的“标准输出”文件用于写入输出以在屏幕上显示。最后,称为 stderr 的“标准错误”文件包含用于在屏幕上显示的任何错误消息。
这三个标准文件,也称为标准流,分别使用编号 0、1 和 2 进行引用。stdin 是文件 0,stdout 是文件 1,stderr 是文件 2。
重定向输出(stdout 和 stderr)
批处理文件中的一种常见做法是将程序的输出发送到日志文件。> 运算符将 stdout 或 stderr 发送或重定向到另一个文件。以下示例显示了如何实现这一点。
Dir C:\ > list.txt
在上述示例中,命令 Dir C:\ 的 stdout 被重定向到文件 list.txt。
如果将数字 2 添加到重定向过滤器,则会将 stderr 重定向到文件 lists.txt。
Dir C:\ 2> list.txt
甚至可以使用文件编号和 ‘&’ 前缀将 stdout 和 stderr 流组合在一起。以下是一个示例。
DIR C:\ > lists.txt 2>&1
抑制程序输出
伪文件 NUL 用于丢弃程序的任何输出。以下示例显示了将 DIR 命令的输出发送到 NUL 以丢弃输出。
Dir C:\ > NUL
要使用标准输入,必须使用一种解决方法来实现。这可以通过重定向命令提示符自己的 stdin(称为 CON)来实现。
以下示例显示了如何将输出重定向到一个名为 lists.txt 的文件。执行以下命令后,命令提示符将接受用户输入,直到获取 EOF 字符。然后,它将所有输入发送到文件 lists.txt。
TYPE CON > lists.txt
在批处理(Batch)文件中,输入(Input)和输出(Output)是脚本与用户或其他程序交互的基本方式。
以下是批处理文件中输入和输出的详细介绍:
输出(Output)
echo
命令:最常用的输出命令,用于在命令行显示文本或变量的值。
echo Hello, World!
命令行参数:批处理文件可以接受命令行参数,这些参数在脚本中以 %1
到 %9
的形式存在,分别代表第一个到第九个参数。
@echo off
echo The first parameter is: %1
重定向输出:使用重定向运算符 >
或 >>
可以将命令的输出保存到文件中。
echo This is a redirected output. > output.txt
echo This line will be appended. >> output.txt
管道:使用 |
可以将一个命令的输出作为另一个命令的输入。
dir | find "example"
选择输入:使用 choice
命令可以让用户从一组选项中做出选择。
@echo off
echo Press 1 for option 1, or 2 for option 2.
choice /c:12
if errorlevel 2 goto option2
echo You selected option 1.
goto end
:option2
echo You selected option 2.
读取文件输入:可以使用 type
命令或 for
循环来读取文件内容。
type input.txt
输入回显:echo
命令可以被禁用或启用,以控制命令行的输出。
@echo off
echo This line will not be echoed.
echo Please enter your name:
set /p name=>
echo Hello, %name%. Nice to meet you!
echo The current date is: %date%
echo The current time is: %time%
echo This will be displayed on the screen.
echo And this will be appended to file.txt.
echo Append this line. >> file.txt
dir | find "batch"
使用 echo
命令时,如果需要输出文本中的百分号 %
,应使用两个百分号 %%
来避免与变量解析冲突。
使用 set /p
时,输入的值将包含任何尾随空格,除非使用 set /p var=Prompt:
格式,这样用户输入后按回车键将不包含尾随空格。
批处理文件的输出默认是发送到命令行窗口。可以使用 echo
命令结合重定向运算符将输出保存到文件中。
通过这些输入和输出的方法,批处理文件能够与用户进行交互,并与其他程序或脚本交换数据。
https://www.tutorialspoint.com/batch_script/batch_script_input_output.htm
详细介绍一下 bat 的 input/output