[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. for /l %%i in (1,1,300) do cd.>%%i.txt
复制代码
这个命令的运行只需要大约3秒钟,也就是说,平均每秒钟100个文件。
dir /od的时间判断可能没有这么精确(精确到0.01秒),所以就出现了如图情况(图上的文件名均小于100,而这些文件都是同一秒创建的)

TOP

本帖最后由 michael8111 于 2011-5-17 19:33 编辑

楼上:经过测试,两次dir的结果确实是不同的。我只截取一段以证明:
第一次:
  1. 1.txt
  2. 2.txt
  3. 6.txt
  4. 5.txt
  5. 4.txt
  6. 7.txt
  7. 3.txt
  8. 8.txt
  9. 12.txt
  10. 13.txt
  11. 10.txt
  12. 9.txt
  13. 11.txt
  14. 15.txt
  15. 16.txt
复制代码
第二次:
  1. 1.txt
  2. 3.txt
  3. 4.txt
  4. 5.txt
  5. 6.txt
  6. 2.txt
  7. 7.txt
  8. 11.txt
  9. 10.txt
  10. 12.txt
  11. 8.txt
  12. 9.txt
  13. 17.txt
  14. 14.txt
  15. 18.txt
复制代码
那么,每一次创建300个文件的代码都是一样的,而结果却不同。dir的排序究竟遵循什么规律?这个有待于发现。

TOP

对,不同批的存在区别。
另外:
  1. @echo off
  2. for /l %%i in (1,1,300) do (
  3. ping -n 1 127.1>nul
  4. cd.>%%i.txt
  5. )
  6. dir /a-d /b /od *.txt
  7. pause
复制代码
这次执行后,dir的顺序完全变成正常顺序。
再另外:
6楼的结果是win7下的测试结果,300个文件的排序只有微小的差别,而不是像楼主的截图一样有巨大的差别。难道dir的排序与操作系统有关?或者与电脑的快慢有关?

TOP

9楼发的是什么?

TOP

8楼的代码比较易于观察,观察后发现:
每一个ping的延时之后都生成一个文件,所以FOR /l是每循环一次就创建一个文件

TOP

14# zm900612


可以用for把第二个文件名提取出来,就转换大小写了。
不过,dir既然无法精确判断时间,那么当dir判断这两个文件的创建时间“相同”时,dir是根据什么规律“固定”这300个文件的顺序?

TOP

15# mxxcgzxxx


这样似乎也不对。。。
8楼的代码有ping -n 1 127.1>nul
但是这句代码的延时时间估计也只有半秒多,所以dir还不是以秒为单位,而是比秒更短的单位

TOP

看来 explorer.exe和dir的排序方式有所不同 或许explorer更为精确
dir有误差的问题还没解决 而namejm的测试结果差别更大 更是匪夷所思

TOP

21# mxxcgzxxx


你应该在命令提示符下输入:
  1. dir /a-d /b /od *.txt
复制代码
这样的测试结果 和批处理完全相同
在cmd和批处理中的命令应该完全相同 才能比较结果
SZDLite Security Lab

TOP

哦 那dir的规律是否也可以通过多次试验来推导出
SZDLite Security Lab

TOP

25# hanyeguxing


原来的代码创建文件的顺序是从1.txt按顺序排到300.txt
然而1楼 6楼等的结果都是乱序的
如果是先按时间 后按名称 应该严格按照1到300排列 但事实却不是如此
SZDLite Security Lab

TOP

我也是win7,与31楼的结果相同
不过28楼 和 30楼的执行结果有些匪夷所思 不知道为什么 namejm的贴图顺序更乱
现在问题越来越严重:dir究竟对于这种情况怎么排列(请注意,排列顺序在文件创建时就固定了)
SZDLite Security Lab

TOP

楼上 我用fat32的U盘测试 发现不但没有严格按照先后排列 反而更乱了 就像namejm的图那样
看来fat32的文件系统也要分情况……
SZDLite Security Lab

TOP

我这个顺序是非常无厘头的……
  1. ……
  2. (以上均正常)
  3. 80.txt
  4. 121.txt
  5. 120.txt
  6. 119.txt
  7. 118.txt
  8. 117.txt
  9. 116.txt
  10. 115.txt
  11. 114.txt
  12. 113.txt
  13. 112.txt
  14. 111.txt
  15. 110.txt
  16. ……
  17. (以下均倒序排列)
  18. ……
  19. 83.txt
  20. 82.txt
  21. 81.txt
  22. 135.txt
  23. 165.txt
  24. 166.txt
  25. 167.txt
  26. 168.txt
  27. 169.txt
  28. ……
  29. (以下均正序排列)
  30. ……
  31. 189.txt
  32. 190.txt
  33. 191.txt
  34. 163.txt
  35. 162.txt
  36. 161.txt
  37. 160.txt
  38. 159.txt
  39. ……
  40. (以下均倒序排列)
  41. ……
  42. 139.txt
  43. 138.txt
  44. 137.txt
  45. 122.txt
  46. 123.txt
  47. 124.txt
  48. ……
  49. (122-134正序)
  50. ……
  51. 164.txt
  52. 136.txt
  53. 257.txt
  54. 256.txt
  55. 255.txt
  56. ……
  57. (以下均倒序排列)
  58. ……
  59. 194.txt
  60. 193.txt
  61. 192.txt
  62. 230.txt
  63. 229.txt
  64. (230-203倒序)
  65. 300.txt
  66. 299.txt
  67. 298.txt
  68. 297.txt
  69. (300-258倒序)
  70. 292.txt
复制代码
SZDLite Security Lab

TOP

这个顺序是在fat32的U盘上的测试结果
顺序非常混乱 有点像1楼
36楼的结果正常 37楼就乱了
这到底是怎么回事……
难道dir的排序跟具体的每一个磁盘的设置(比如“簇”等)有关?
SZDLite Security Lab

TOP

返回列表