标题: [文本处理] [已解决]如何生成指定个数的随机字符 [打印本页]
作者: xieqingx 时间: 2010-4-5 20:08 标题: [已解决]如何生成指定个数的随机字符
以下代码是生成30个随机字符的代码- @echo off
- set code==^^^&%%%^:!$#^>^<:=~*()@"'`;\| abcdefghijklmnopqrstuvwxyz0123456789-_+?,.
- setlocal enabledelayedexpansion
- :begin
- set /a a=%random%%%64
- set var=!code:~%a%,1!&set str=!str!!var!
- set /a n+=1
- if !n! lss 30 goto begin
- echo !str!
- set /a m+=1
- if !m! lss 20 set str=&set n=0&goto begin
- pause>nul
复制代码
现在我想只保留 @abcdefghijklmnopqrstuvwxyz0123456789 这些字符,也生成30个随机字符,但是如下修改后,输出时位数都不一样了,要怎么改呢??请教一下?-
- @echo off
- set code==@abcdefghijklmnopqrstuvwxyz0123456789
- setlocal enabledelayedexpansion
- :begin
- set /a a=%random%%%64
- set var=!code:~%a%,1!&set str=!str!!var!
- set /a n+=1
- if !n! lss 30 goto begin
- echo !str!
- set /a m+=1
- if !m! lss 20 set str=&set n=0&goto begin
- pause>nul
复制代码
我是想做一个重命名随机文件夹名的P处理,由于原代码包含了非法字符,所以我才改的][
[ 本帖最后由 xieqingx 于 2010-4-5 21:02 编辑 ]
作者: namejm 时间: 2010-4-5 20:13
把 set /a a=%random%%%64 改成 set /a a=%random%%%30
=====================================================
以上说法有误,应当改成 set /a a=%random%%%38,也就是说,数字应当与要处理的字符串的长度保持一致即可。
作者: xieqingx 时间: 2010-4-5 20:26
谢谢你的回答,厉害啊。
我想弄明白是如何算出来的
比较我要随意指定位数呢 如45位 15位 25位等等
那又如何改啊,教我一下好吗?
作者: namejm 时间: 2010-4-5 20:41
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%
结合起来看看就明白是怎么回事了
作者: GNU 时间: 2010-4-5 20:41 标题: 回复 3楼 的帖子
那段代码你哪里看不懂?
作者: xieqingx 时间: 2010-4-5 21:01
主要是弄不明白set /a a=%random%%%64 时,这个a值会在什么范围内
经过老大的讲解,OK了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |