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

[文本处理] [已解决]如何生成指定个数的随机字符

[复制链接]
发表于 2010-4-5 20:08:48 | 显示全部楼层 |阅读模式
以下代码是生成30个随机字符的代码
  1. @echo off
  2. set code==^^^&%%%^:!$#^>^<:=~*()@"'`;\| abcdefghijklmnopqrstuvwxyz0123456789-_+?,.
  3. setlocal enabledelayedexpansion
  4. :begin
  5. set /a a=%random%%%64
  6. set var=!code:~%a%,1!&set str=!str!!var!
  7. set /a n+=1
  8. if !n! lss 30 goto begin
  9. echo !str!
  10. set /a m+=1
  11. if !m! lss 20 set str=&set n=0&goto begin
  12. pause>nul
复制代码
现在我想只保留 @abcdefghijklmnopqrstuvwxyz0123456789 这些字符,也生成30个随机字符,但是如下修改后,输出时位数都不一样了,要怎么改呢??请教一下?

  1. @echo off
  2. set code==@abcdefghijklmnopqrstuvwxyz0123456789
  3. setlocal enabledelayedexpansion
  4. :begin
  5. set /a a=%random%%%64
  6. set var=!code:~%a%,1!&set str=!str!!var!
  7. set /a n+=1
  8. if !n! lss 30 goto begin
  9. echo !str!
  10. set /a m+=1
  11. if !m! lss 20 set str=&set n=0&goto begin
  12. pause>nul
复制代码
我是想做一个重命名随机文件夹名的P处理,由于原代码包含了非法字符,所以我才改的][

[ 本帖最后由 xieqingx 于 2010-4-5 21:02 编辑 ]

评分

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

查看全部评分

发表于 2010-4-5 20:13:09 | 显示全部楼层
把  set /a a=%random%%%64  改成  set /a a=%random%%%30

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

以上说法有误,应当改成 set /a a=%random%%%38,也就是说,数字应当与要处理的字符串的长度保持一致即可。
 楼主| 发表于 2010-4-5 20:26:45 | 显示全部楼层
谢谢你的回答,厉害啊。
我想弄明白是如何算出来的

比较我要随意指定位数呢  如45位 15位  25位等等
那又如何改啊,教我一下好吗?
发表于 2010-4-5 20:41:27 | 显示全部楼层
set /a a=%random%%%64  的结果在0~63这个范围内
set /a a=%random%%%32 的结果在0~31这个范围内
当用set来截取字符时,偏移量是从0开始计算的
如果某字符串长度有64字符,那么,最后一个字符的表示方法为 set str=%str:~63,1%
如果某字符串长度有32字符,那么,最后一个字符的表示方法为 set str=%str:~31,1%
结合起来看看就明白是怎么回事了
发表于 2010-4-5 20:41:48 | 显示全部楼层

回复 3楼 的帖子

那段代码你哪里看不懂?
 楼主| 发表于 2010-4-5 21:01:17 | 显示全部楼层
主要是弄不明白set /a a=%random%%%64  时,这个a值会在什么范围内

经过老大的讲解,OK了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 22:36 , Processed in 0.019278 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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