找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31045|回复: 8

[数值计算] [已解决]批处理%random%怎样随机获取/输出字母?

[复制链接]
发表于 2011-8-11 19:45:03 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-16 23:46 编辑

请问%random%可以不是数字吗?可以随机输出字母吗?
我还是个菜鸟,刚接触批处理不久,给出的代码可以解释下吗?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-8-11 20:09:47 | 显示全部楼层

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "Code=abcdefghijklmnopqrstuvwxyz"
  3. For /L %%i In (1,1,20) Do (
  4.   Set /A Num=!Random!%%26
  5.   For %%j In (!Num!) Do Echo 随机数字:%%j 随机字母:!Code:~%%j,1!
  6. )
  7. Pause>Nul
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-8-11 20:27:04 | 显示全部楼层
试过了,还可以
可是输出的只有一位数,能否输出任意位数的?
发表于 2011-8-11 20:39:38 | 显示全部楼层
这个问题很简单,只需在二楼的代码中,fot循环最后加入一行。
set abc=!abc!!num!
 楼主| 发表于 2011-8-11 20:46:27 | 显示全部楼层
对不起~不清楚~
能否列出完整的代码~
 楼主| 发表于 2011-8-11 20:54:01 | 显示全部楼层
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "Code=abcdefghijklmnopqrstuvwxyz1234567890QWERTYUIOPASDFGHJKLZXCVBNM"
  3. For /L %%i In (1,1,20) Do (
  4.   Set /A Num=!Random!%%62
  5.   set abc=!abc!!Num!
  6.   For %%j In (!Num!) Do Echo !Code:~%%j,100!
  7. )
  8. Pause>Nul



复制代码
我明白啦~
  1. !Code:~%%j,1!
复制代码
里面的“1”改一改就可以啦~
但是还是要谢谢你们~
发表于 2011-8-11 21:08:01 | 显示全部楼层
批处理函数库
使用其中的Array取得字母,使用Random取要返回的随机字母的字母数组下标
 楼主| 发表于 2011-8-12 15:47:43 | 显示全部楼层
回复 7# wrove

好深奥哦~
看不懂啦~
发表于 2016-11-16 23:39:20 | 显示全部楼层
本帖最后由 pcl_test 于 2016-11-16 23:41 编辑
  1. @echo off
  2. rem 调用方法call :rletter 结果 长度 大小写[1小写|2大写|默认随机大小写]
  3. call :rletter s 5 2
  4. echo;%s%
  5. pause&exit
  6. :rletter
  7. setlocal enabledelayedexpansion
  8. if "%2" equ "" (set e=1) else (
  9.     if "%2" equ "0" (set e=1) else (
  10.         echo;%2|findstr "^[1-9][0-9]*$" >nul||set e=1
  11.     )
  12. )
  13. if defined e echo;Error&goto :eof
  14. set a=abcdefghijklmnopqrstuvwxyz
  15. set b=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  16. set c=AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
  17. for /l %%a in (1 1 %~2) do (
  18.     set/ai=!random!%%26,j=!random!%%52
  19.     if "%~3" equ "1" (
  20.         for %%i in (!i!) do set s=!s!!a:~%%i,1!
  21.     ) else if "%~3" equ "2" (
  22.         for %%i in (!i!) do set s=!s!!b:~%%i,1!
  23.     ) else (
  24.         for %%i in (!j!) do set s=!s!!c:~%%i,1!
  25.     )
  26. )
  27. endlocal&set "%~1=%s%"&goto :eof
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:01 , Processed in 0.019336 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表