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

TOP

这里面有没有你需要的http://www.bathome.net/viewthread.php?tid=55180

TOP

回复 17# went

我想参考这个链接的代码修改,

@echo off
set "max=100"
set "min=40"
set "n=20"
set /a "a=%random%%%(%max%-%min%+1)+%min%"
echo %a%>random.txt
pause

随机数是产生了,问题是如何记录随机数字已经被使用过了。
40~100的随机数字,不重复,不遗漏。
我不知道如何利用上面的模版进行修改?

TOP

回复 18# netdzb
参考13楼代码就行了,数字不大,效率就不是问题了。

TOP

回复 19# qixiaobin0715

13楼的代码报错,测试文件都在网盘附件上面。
https://javame.lanzoui.com/iVnqFpg5vtg

%%a in (`set _`)  批处理也有linux的用法吗?

TOP

  1. @echo off
  2. for /f "usebackq delims=" %%a in (`dir /b *.txt`) do (
  3.     call :f "%%a"
  4. )
  5. for /f "usebackq tokens=2 delims==" %%a in (`set _`) do (
  6.     echo %%a
  7. )
  8. goto :END
  9. :f
  10. set n=%random%
  11. if defined _%n% goto :f
  12. set _%n%=%~1
  13. goto :eof
  14. :END
复制代码
拼写错误。。。。

TOP

回复 20# netdzb


    set _ 输出 _开头的变量

TOP

回复 21# newswan

xls006.txt
xls003.txt
xls007.txt
xls002.txt
xls009.txt
xls004.txt
xls005.txt
xls001.txt
xls010.txt
xls008.txt
1

运行结果多了一个1,而且第2次运行会产生20多行数据。

TOP

回复 18# netdzb

上面帖子里有现成的
  1. @echo off & cd /d "%~dp0"
  2. call :getSingleRandom 40 100 20
  3. echo 随机字符串:%randomStr%
  4. for %%i in (%randomStr%) do echo %%i
  5. pause&exit
  6. REM 方法:获取单一随机数 call :getSingleRandom 最小值 最大值 随机数个数
  7. :getSingleRandom
  8. set "n=%~3"
  9. set "randomStr= "
  10. :loop
  11. set /a "a=%random%%%(%~2-%~1+1)+%~1"
  12. call set "newStr=%%randomStr:%a%=%%"
  13. if "%newStr%" equ "%randomStr%" (
  14. set "randomStr=%randomStr% %a%"
  15. set /a "n-=1"
  16. )
  17. if "%n%" neq "0" goto :loop
  18. goto :eof
复制代码

TOP

回复 24# went

第2行改成下面的都是死机
call :getSingleRandom 1 100 98
call :getSingleRandom 1 100 99
call :getSingleRandom 1 100 100

=======================

call :getSingleRandom 1 100 90 可以通过。

TOP

用数字测试可以。
  1. @echo off
  2. for /l %%a in (40,1,100) do (
  3.     call :f %%a
  4. )
  5. for /f "usebackq tokens=2 delims==" %%i in (`set #`) do (
  6.     echo %%i
  7. )
  8. pause
  9. goto :eof
  10. :f
  11. set n=%random%
  12. if defined #%n% goto :f
  13. set #%n%=%~1
  14. goto :eof
  15. pause
复制代码

TOP

回复 23# netdzb


    下载你发的,已测试,没有问题

TOP

1到10的随机排列
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. rem 1..10
  4. for /l %%a in (1,1,10) do (
  5.     set _%%a=x%%a
  6. )
  7. echo   sequences
  8. for /l %%a in (1,1,10) do (
  9.     echo !_%%a!
  10. )
  11. rem 随机
  12. for /l %%a in (1,1,9) do (
  13.     call :f %%a 10
  14. )
  15. echo   random
  16. for /l %%a in (1,1,10) do (
  17.     echo !_%%a!
  18. )
  19. goto :END
  20. :f
  21. set /a n=%random%%%(%2-%1+1)+%1
  22. if %n%==%1 goto :eof
  23. set t=!_%n%!
  24. set _%n%=!_%1!
  25. set _%1=%t%
  26. goto :eof
  27. :END
复制代码

TOP

我觉得你可以用powershell,win7也支持
  1. powershell -c "40..100 | Sort-Object {return Get-Random}"
复制代码

TOP

只取10个
  1. powershell -c "40..100 | Sort-Object {return Get-Random} | Select-Object -First 10"
复制代码

TOP

返回列表