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

TOP

新手来学了,谢谢了

TOP

本帖最后由 cjiabing 于 2011-6-23 21:23 编辑
  1. @echo off
  2. ::零字节
  3. cd.>1.txt
  4. cd.>2.txt
  5. cd.>3.txt
  6. pause
  7. ::使用一个cd命令创建多个文件,命令格式:cd,n>Name1.txt,n-1>Name2.txt,n-2>Name3.txt,n-3……
  8. ::注意:cd后面以及各个文件名之间跟的是点号“,”,重定向符“>”前跟的是数字,这个数字第一个是要创建的文件总数,依次递减,直至1。
  9. cd,4>111.txt,3>222.txt,2>333.txt,1>444.txt
  10. cd,3>121.txt,2>122.txt,1>123.txt
  11. pause
  12. ::显然不是零字节,并且,似乎与句柄那类东西有关,速度受到一定程度的影响,而且成功率有可能无法保证,比如下例:
  13. cd,5>4321.txt,4>4321.txt,3>4322.txt,2>4323.txt,1>4324.txt>nul 2>nul
  14. cd,6>a.txt,5>b.txt,4>c.txt,3>d.txt,2>e.txt,1>f.txt
  15. ::不能重复利用,无法覆盖原来的数据。
  16. pause
  17. del 4321.txt,4321.txt,4322.txt,4323.txt,4324.txt,121.txt,122.txt,123.txt,111.txt,222.txt,333.txt,444.txt,3.txt,2.txt,1.txt,e.txt,a.txt,b.txt,c.txt,d.txt,f.txt
复制代码
楼主的绝招真多啊!~学学点。不过那个同时创建多个文件的似乎无效:
1、只创建得一两个,2、速度慢,出错。
我研究了一下,提出以下方案,大家看看怎么样!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

18# cjiabing

成功率不高的情况是这样吗?:
  1. cd.>1.txt 3>2.txt
  2. cd.>2.txt
复制代码
那是因为句柄会占用文件,解决方法是避开句柄备份(比如只用句柄 1、2、5、7、9 或者 1、4、6、8),或者将指向文件的句柄关闭,更好的办法是先“打预防针”,见下面三例:
  1. cd.>1.txt 2>2.txt 5>3.txt 7>4.txt 9>5.txt
  2. cd.>1.txt 2>2.txt 5>3.txt 7>4.txt 9>5.txt
  3. ::避开句柄备份避免出错
复制代码
  1. cd.>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt
  2. cd.>nul 2>nul 3>nul 4>nul 5>nul 6>nul 7>nul 8>nul 9>nul
  3. cd.>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt
  4. ::将指向文件的句柄关闭
复制代码


我认为最好的解决办法应该是:
  1. cd.>nul 2>nul 3>nul 4>nul 5>nul 6>nul 7>nul 8>nul 9>nul
  2. cd.>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt
  3. cd.>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt
  4. ::通过句柄备份,使除9以外所有句柄均不为空,也就无法再进行可操作的句柄备份了,不过因为句柄9的特殊性,日后生成文件时只能用1~8,不宜用句柄9,否则仍然存在发生句柄备份的可能
复制代码

TOP

19# zm900612
不懂得能否重复利用,我那个放到一个循环里,结果它就不起作用了,搞得我都没信心了。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

楼主辛苦了,顶.

TOP

20# cjiabing
可以的:
  1. @echo off>nul 2>nul 3>nul 4>nul 5>nul 6>nul 7>nul 8>nul 9>nul
  2. ::先使句柄不为“真空”,也就避免了后面发生句柄备份的可能,不过除非特殊情况,不建议把句柄1、2也用上
  3. for /l %%a in (1 1 8) do (
  4.    for /l %%b in (1 1 8) do echo>%%b.txt %%a%%b
  5.    rem 生成8个txt文本,接下来用句柄清空
  6.    pause
  7.    cd.>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt
  8.    rem 因为此时句柄1~8已经不为空,所以均可重复用,唯独句柄9最好别用
  9. )
  10. pause
复制代码

TOP

很好  对于我这个新手来说是个很好的东西 感谢楼主的笔记

TOP

楼主的笔记对我这个新手很有用  先收藏   在学到那里的时候   慢慢研究

TOP

忍不住要赞一个

TOP

返回列表