批处理的小问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 23:40:23
@echo off
echo. 1>nul 3>2.txt
for /f %%i in (1.txt) do set /p n=%%i<nul
echo. 1>con 4>con
echo 已书写完毕!
pause
其中echo. 1>nul 3>2.txt这句是什么意思??
第二句中<nul不懂
第三句也是,con 从来没用过
最主要的是echo. 1>con 4>con 这句啊!!!太多不懂.帮忙!!

1>nul就是把1输出到空设备上(我理解是把它丢弃,并不在显示器上显示出来)
3>2.txt就是把3输入当前目录下的2.txt这个文本文件
con是控制台(键盘/显示器)
<或>是定向输出符,学过C有一点基础就会知道,不过有点不一样
=======
关于控制台:http://zhzwt1821.blog.sohu.com/63295129.html(反正我是看不懂)

DOS的标准输入输出通常是在标准设备键盘和显示器上进行的,利用重定向,可以方便地将输入输出改向磁盘文件或其它设备。其中:
1.大于号“>”将命令发送到文件或设备,例如打印机>prn。使用大于号“>”时,有些命令输出(例如错误消息)不能重定向。
2.双大于号“>>”将命令输出添加到文件结尾而不删除文件中已有的信息。
3.小于号“<”从文件而不是键盘上获取命令所需的输入。
4.>&符号将输出从一个默认I/O流(stdout,stdin,stderr)重新定向到另一个默认I/O流。例如,command >output_file 2>&1将处理command过程中的所有错误信息从屏幕重定向到标准文件输出中。标准输出的数值如下所示:
标准输出 等价的数值
Stdin 0
Stdout 1
Stderr 2
其中,1和2都创建一个文件用于存放数据;

一个有意思且有意义的现象,因为未见于公开的官方文档,所以它似乎是介于未公开特性与程序算法漏洞之间的存在。
经过简单测试得到以下结论:
这个现象由句柄二次重定向所引起,与语句的命令主体无关;
二次重定向的目标可以不同,前次重定向影响本语句,后次重定向影响语句结束后的CMD环境;
后次重定向的句柄必须是未定义句柄,且必须在前次重定向之前未曾使用过;此次使