[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
纯p这样的效率应该很高了吧。
可惜findstr的结果会自动排序,要不效率应该会快点。
m取值为n不是更合理,第8行应该追加吧 ))>>"%%i"
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 8# needhelp
纯P处理这么大文件可不行,换个思路试试:
  1. @echo off&setlocal enabledelayedexpansion
  2. findstr /n .* all.txt >tmp
  3. for /l %%a in (1,1,1020) do (
  4.      set/a r=!random!+!random!%%17233+1
  5.      set "var=!var!!r!: "
  6. )
  7. for /f "tokens=1* delims=:" %%a in ('findstr /b "!var!" tmp') do (
  8.     set /a n+=1
  9.     if !n! leq 1000 set "#!n!=%%b"
  10. )
  11. for /f "delims=" %%i in ('dir /b /a-d *.txt ^| findstr /ivx "all\.txt"') do (
  12.     (for /l %%a in (1 1 10) do (
  13.         set /a n=!random!%%1000+1
  14.         for %%b in (!n!) do echo !#%%b!
  15.     ))>>"%%i"
  16. )
  17. del tmp
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

本帖最后由 xxpinqz 于 2013-7-3 19:22 编辑

或者不考虑随机数的顺序,效率会高一点
17233=50000-32767
  1. @echo off&setlocal enabledelayedexpansion
  2. set "fn=all.txt"
  3. for /l %%a in (1,1,1020) do (
  4.      set/a r=!random!+!random!%%17233+1
  5.      set "var=!var!!r!: "
  6. )
  7. findstr /n .* "%fn%"|findstr /b "%var%" >tmp
  8. (for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  9.     if not "%%i"=="%fn%" (
  10.         (for /l %%a in (1 1 10) do (
  11.              set/p str=
  12.               echo,!str:*:=!
  13.          ))>>"%%i"
  14.     )
  15. ))<tmp
  16. del tmp
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表