[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [分享]批量文本重定向输出的新方案

传统方案不用多说了
老老实实一个Echo一个重定向就可以了

后来发展出的方案则是分组输出
(for /l %%i in (1,1,10000) do echo string)>test1.log
这个方案的优点也不用多说
文件打开次数减少
时间性能有了很大提升

现在有一种新方案
使用二次重定向
cd. >con 3>test2.log
for /l %%i in (1,1,10000) do echo string
cd. >con 4>con

与方案2相比
文件打开次数是一致的
优点是在代码中出现多条输出指令时
不需要进行语句分组
也就不需要过多的预处理和启用变量延迟了

缺点是在一个cmd进程中
同样的方法只能使用一次

只有在关闭cmd进程后文件才会关闭
所以一般需要使用cmd/c新建cmd进程来调用批处理

[ 本帖最后由 qzwqzw 于 2010-5-3 18:01 编辑 ]
1

评分人数

天的白色影子

重定向中的秘密(句柄备份)
http://www.bathome.net/viewthread.php?tid=2579
天的白色影子

TOP

多看,多用,多想
很快你就会明白的

我怕照我的思路说下去
反而让你更加弄不明白
天的白色影子

TOP

本帖最后由 qzwqzw 于 2011-5-25 11:52 编辑

把老帖翻出来供自己学习
楼上好无良啊 ^_^

句柄的理解不需要那么复杂
cmd缺省具有10个可供I/O的句柄
可以理解为10个可以存放I/O文件或者设备地址的空间
从0到9依次编号

句柄0-2大量地被命令行程序用来输入输出信息
他们都缺省存放控制台设备con的地址
con可以理解为当前的命令行窗口
但它们的读写属性有所差异
句柄0的别名是标准输入,限定只可读
句柄1的别名是标准输出,限定只可写
句柄2的别名是标准错误,可读可写

句柄3-句柄9缺省是空的,也均可读可写
需要通过重定向或者句柄复制给它们赋值
目前未发现有命令行程序使用句柄3-9进行输入输出
所以这些句柄现在只在句柄备份领域有特殊的应用
天的白色影子

TOP

本帖最后由 qzwqzw 于 2011-5-25 15:29 编辑

12# zm900612
句柄转移的概念模型建立并不理想
echo test 3>1.txt 1>&3
完全可以用句柄复制模型简单解释
1、1.txt赋给句柄3
2、句柄3复制到句柄1
最终结果就是句柄1和句柄3都被赋为1.txt
echo的输出通过句柄1输出到文件1.txt
而句柄3因为echo命令根本不用它输出
所以不会有任何结果上的影响

其实重定向和管道也可以看作是句柄复制的一种特例
重定向是将文件或者IO设备的句柄复制给cmd的保留句柄
管道是将cmd的句柄1(标准输出)复制给句柄0(标准输入)

另外重申和明确一个概念
句柄在cmd中不仅仅是文件和设备的地址
它还包含了一些附加的属性
比如I/O相关的读写属性
所以句柄0是缺省只读的
句柄1是缺省只写的
句柄2是缺省可读可写的
而句柄复制的过程中
不仅复制了句柄中的文件或设备地址信息
也同时复制了包括IO属性在内的附加信息
天的白色影子

TOP

返回列表