[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  从其他地方看到的代码,使用到了 sort /+n ,思路很巧妙:
  1. @echo off&setlocal enabledelayedexpansion
  2. :a
  3. set /a n1=%random%%%25+1
  4. set n2=0
  5. for /f "tokens=*" %%a in ('sort /+%n1% 1.txt') do (
  6. set /a n2+=1
  7. if !n2! gtr 10 goto jieshu
  8. echo %%a
  9. )
  10. :jieshu&pause&goto a
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

more也可以,就是要产生临时文件:
  1. @echo off
  2. :lp
  3. set /a m+=1
  4. if %m% equ 10 del /q tmp&pause&exit/b
  5. set /a n=%random%%%12+1
  6. (more +%n% 1.txt)>tmp
  7. set /p str=<tmp
  8. echo %str%
  9. goto lp
复制代码
(*^_^*)

TOP

在 [ 随风] 的基础上改了一下,做到不重复,完全随机(16楼sort方法,有些行是永远也取不到的),不生成临时文件
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a n=10
  3. for /f "tokens=2 delims=:" %%a in ('find /v /c "" a.txt')do set/a h=%%a
  4. for /l %%a in (1,1,%n%) do (
  5.     set/a v=!random!%%h+1
  6.     for /l %%b in (1,1,%n%) do (
  7.         if defined tem!v! (set /a v=v%%n+1)
  8.     )
  9.     set tem!v!=y
  10.     set var=!var! !v!:
  11. )
  12. for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt^|findstr /b "!var!"') do echo %%b
  13. pause
复制代码

[ 本帖最后由 netbenton 于 2009-6-2 20:09 编辑 ]

TOP

返回列表