|
wqh2008
新手上路
积分 10
发帖 4
注册 2008-4-4
状态 离线
|
『楼 主』:
请教如何随机生成一串字符串
请教论坛各位一个问题:
能不能用批处理生成一个指定长度的字符串,自己指定,1~20位,此字符串由数字、大小写字母、特殊字符混合组成!并输出保存.
例如,运行它产生一个8位的(自己指定,可以更改产生长度):保存到D:\vsj.txt
F%2"j8@?
如果可以,请回贴告知,谢谢!
[ Last edited by wqh2008 on 2008-4-9 at 02:51 PM ]
|
|
2008-4-5 09:59 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
2 楼』:
:
@echo off&setlocal enabledelayedexpansion
set var=abcdefghijklmnopqrstuvwxyz0123456789
set var=%var%ABCDEFGHIJKLMNOPQRSTUVWXYZ
set /p n=输入指定字符串长度
for /l %%a in (1 1 %n%) do (
set /a w=!random!%%61
call set m=!m!%%var:~!w!,1%%
)
>>as.txt echo %m%
start as.txt
|
致精致简! |
|
2008-4-5 11:23 |
|
|
wqh2008
新手上路
积分 10
发帖 4
注册 2008-4-4
状态 离线
|
『第
3 楼』:
非常感谢,但是还有个问题,特殊字符怎么加进去?
像:~!@#$%^&*()_+|":?><{}.,/\[]-=
∠①Ⅳ∫∮≌∞♂
这些字符可以加进去吗,其中的一部分也可以,如果可以怎么加呢?
|
|
2008-4-6 09:12 |
|
|
forkfan
初级用户
积分 27
发帖 12
注册 2008-3-29
状态 离线
|
『第
4 楼』:
那么生成1--50的随机排列怎么排
疑问:有1112,如果随机数是11 那么call set m=!m!%%var:~!w!,1%%替代的是1112中的(11)12还是1(11)2呢?
|
|
2008-4-6 14:21 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
5 楼』:
替代的是1112中的(11)12
|
致精致简! |
|
2008-4-6 14:26 |
|
|
forkfan
初级用户
积分 27
发帖 12
注册 2008-3-29
状态 离线
|
『第
6 楼』:
不会替换1112中的1(11)2吗????
|
|
2008-4-6 14:32 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
7 楼』:
你是说随机排列1-50这50个数字吗?
可以换个思路来完成。
@echo off
for /l %%a in (1 1 50) do call set __%%random%%=%%a
for /f "tokens=2 delims==" %%i in ('set __^|sort /r') do echo %%i
pause
|
致精致简! |
|
2008-4-6 15:11 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
8 楼』:
请问7楼,是如何实现的呢,谢谢!
|
|
2008-4-6 15:51 |
|
|
forkfan
初级用户
积分 27
发帖 12
注册 2008-3-29
状态 离线
|
|
2008-4-6 16:29 |
|
|
wqh2008
新手上路
积分 10
发帖 4
注册 2008-4-4
状态 离线
|
『第
10 楼』:
还有哪位可以回答下我的疑问吗?谢谢!
|
|
2008-4-9 08:09 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
11 楼』:
Quote: | 非常感谢,但是还有个问题,特殊字符怎么加进去?
像:~!@#$%^&*()_+|":?><{}.,/\[]-=
∠①Ⅳ∫∮≌∞♂
这些字符可以加进去吗,其中的一部分也可以,如果可以怎么加呢? |
|
请保存为1.bat,不能处理特殊字符(请自行删减),如果有空格会显示ECHO 处于关闭状态(例如"∫"就会视为有空格)
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('type 1.bat') do set aa=%%a
:begin
echo.
set /p ab=请输入指定字符串长度:
for /l %%i in (1 1 %ab%) do (
call :aaa
call set ad=%%aa:~!ac!,1%%
set/p=!ad!<nul
>>"d:\vsj.txt" echo !ad!
)
goto begin
:aaa
::95这个数由最后一行的字符来确定,我只是大概数了下
set /a ac=%random%%%95
goto :eof
abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%&*()_+":?∠①Ⅳ∫∮≌∞♂{}.,/\[]-= [ Last edited by moniuming on 2008-4-9 at 01:46 PM ]
|
|
2008-4-9 14:44 |
|
|
wqh2008
新手上路
积分 10
发帖 4
注册 2008-4-4
状态 离线
|
『第
12 楼』:
谢谢26933062、moniuming的解答!
顺便问下各位,怎么排列这些字符才能使它产生的字符串复杂些?
比如:
0#l{F?(7位)
K*&5{(Dt8# (10位)
[ Last edited by wqh2008 on 2008-4-9 at 02:57 PM ]
|
|
2008-4-9 14:50 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
|
2008-4-9 15:39 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
14 楼』:
对11楼进行了完善,不用去数最后一行的个数了
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('type %0') do set aa=%%a&set zz=%%a
set n=0
:again
if "%aa%"=="" goto :begin
set aa=%aa:~1%
set /a n+=1
goto :again
:begin
echo.
set /p ab=请输入指定字符串长度:
for /l %%i in (1 1 %ab%) do (
call :aaa
call set ad=%%zz:~!ac!,1%%
set/p=!ad!<nul
)
echo\&echo.&pause&cls&goto :begin
:aaa
set /a ac=%random%%%%n%
goto :eof
0123456789abcdefghijklmNOPQRSTUVWXYZ~@#$%*()_+`':?∠①Ⅳ∫∮≌∞♂{}.,/\[]-
|
|
2008-4-11 00:07 |
|