本帖最后由 tmplinshi 于 2013-9-27 23:29 编辑
e:\我的文档\桌面>rstr /?
rstr.bat --- 生成随机字符串
用法: rstr [字符个数 | 最小字符个数-最大字符个数] [字符串]
[字符个数] 默认值: 10
[字符串] 默认值: abcdefghijklmnopqrstuvwxyz0123456789
可以使用四个正则: \d [0-9] [a-z] [a-zA-Z]
示例: rstr
rstr 10
rstr 10-15
rstr 10 "0123&abc"
rstr "" \d@-_
e:\我的文档\桌面>rstr
ta946ou122
e:\我的文档\桌面>rstr 3
3zv
e:\我的文档\桌面>rstr 3 \d
646 |
| :: rstr.bat --- 生成随机字符串 | | :: v1.00 / 2013-6-12 / tmplinshi | | | | @echo off | | setlocal enabledelayedexpansion | | | | if "%~1" == "/?" goto usage | | | | :: ------------------- 默认值 ------------------- | | set d_len=10 | | set d_StrList=abcdefghijklmnopqrstuvwxyz0123456789 | | :: ---------------------------------------------- | | | | | | | | :: ================= | | :: 生成随机字符串 | | :: ================= | | :: | | | | rem ############## 获取字符个数 | | if "%~1" == "" (set len=%d_len%) else (set "len=%~1") | | | | rem 随机“最小字符个数-最大字符个数” | | if "%len:-=%" neq "%len%" ( | | for /f "tokens=1,2 delims=- " %%a in ("%len%") do ( | | set /a min_len = %%a, max_len = %%b | | set /a "len = %random% %% (max_len-min_len+1) + min_len" | | ) | | ) | | | | rem ############## 获取字符串 | | if "%~2" == "" ( | | set StrList=%d_StrList% | | ) else ( | | set "StrList=%~2" | | | | rem 替换正则 | | set StrList=!StrList:\d=0123456789! | | set StrList=!StrList:[0-9]=0123456789! | | set StrList=!StrList:[a-z]=abcdefghijklmnopqrstuvwxyz! | | set StrList=!StrList:[a-zA-Z]=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ! | | ) | | | | rem ############## 计算字符串长度 | | call :StrLen "%StrList%" | | | | rem ############## 生成随机字符串 | | set _out= | | for /l %%n in (1 1 %len%) do ( | | set /a pos = !random! %% StrLen | | for %%p in (!pos!) do set _out=!_out!!StrList:~%%p,1! | | ) | | | | rem ############## 输出结果 | | echo,!_out! | | exit /b | | | | | | | | :: ================= | | :: 计算字符串长度 | | :: ================= | | :: | | :StrLen <string> | | set "_StrList=%~1" | | set StrLen=1 | | | | for %%a in (2048 1024 512 256 128 64 32 16) do ( | | if "!_StrList:~%%a!" neq "" ( | | set /a StrLen += %%a | | set _StrList=!_StrList:~%%a! | | ) | | ) | | set _StrList=!_StrList!fedcba9876543210 | | set /a StrLen += 0x!_StrList:~16,1! | | goto :eof | | | | | | | | :: ================= | | :: 显示帮助 | | :: ================= | | :: | | :usage | | echo %~nx0 --- 生成随机字符串 | | echo, | | echo 用法: %~n0 [字符个数 ^| 最小字符个数-最大字符个数] [字符串] | | echo [字符个数] 默认值: 10 | | echo [字符串] 默认值: abcdefghijklmnopqrstuvwxyz0123456789 | | echo 可以使用四个正则: \d [0-9] [a-z] [a-zA-Z] | | echo, | | echo 示例: %~n0 | | echo %~n0 10 | | echo %~n0 10-15 | | echo %~n0 10 "0123&abc" | | echo %~n0 "" \d@-_COPY |
|