中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 01:46
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]怎样生成一个纯数字的密码字典 查看 3,874 回复 9
楼 主 [已结]怎样生成一个纯数字的密码字典 发表于 2007-08-29 14:10 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我想用批处理来生成密码字典,用户输入密码长度,自动生成字典文件dictionary.txt
如果输入3,则dictionary.txt的内容如下:
000
001
002
...
998
999

如果输入4,则dictionary.txt的内容如下:
0000
0001
0002
....
9998
9999


望高人指点。

[ Last edited by HAT on 2008-11-12 at 21:39 ]
2 发表于 2007-08-29 16:42 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
@echo off
set /p num=input a number:
for /l %%i in (1,1,%num%) do call set max=%%max%%9
call set max=%%max:~0,%num%%%
for /l %%i in (0,1,%max%) do set out=000000000000000000000000%%i&&call echo %%out:~-%num%%%>>dictionary.txt

pause
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
HAT +4 2007-08-29 22:16
523066680 +5 2008-12-19 10:30
3 发表于 2007-08-29 22:18 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
多谢 wudixin96 兄
我会在此基础上思考一下纯字母密码以及字母数字混合密码
如果有问题的话再来请教
4 发表于 2007-08-29 22:18 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
差点忘了加分
罪过罪过
补上啦
5 发表于 2007-08-30 17:01 ·  中国 江苏 苏州 联通
初级用户
积分 48
发帖 25
注册 2007-07-30 17:57
18年会员
UID 94318
性别 男
状态 离线
學習一下.
6 发表于 2008-12-19 10:32 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
也做了一个,只支持9位以下,重在参与嘛

@echo off &setlocal enabledelayedexpansion
title code by hi.baidu.com/523066680
set /p "n=输入位数,最大为9: "

for /l %%x in (1,1,%n%) do (
set fo="for %%%%x in (0 1 2 3 4 5 6 7 8 9) do (!fo!"
set end="!end!)"
set echo=!echo! %%%%x
)

%fo:"=%
echo %echo%
%end:"=%
pause
7 发表于 2009-01-04 02:47 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
(六)楼的速度好快,看不懂
我用笨办法练习一下:
@echo off
cd.>dictionary.txt
set /p in=key a number:
set b=%in%
:ex1
if %b% gtr 0 set /a b-=1&set max=9%max%&goto :ex1
set ba=%max:9=0%
:ex2
if %b% leq %max% set ok=%ba%%b%&call echo %%ok:~-%in%%%>>dictionary.txt&set /a b+=1&goto ex2
type dictionary.txt&pause&goto :eof
精简
=> 个人网志
8 发表于 2009-01-04 16:11 ·  中国 贵州 安顺 电信
初级用户
积分 94
发帖 49
注册 2008-12-14 20:47
17年会员
UID 133884
性别 男
状态 离线
从效率上看应该是6楼的单纯n个循环最快了,7楼这个如果每个数都要去if一下,效率可想而知。
受7楼补0的启发,我也来练习一下,效率应该跟6楼很接近。
@echo off
setlocal enabledelayedexpansion
set /p n=key a number:
for /l %%i in (%n%,-1,1) do (
set z=&set min=&set max=
for /l %%j in (2,1,%%i) do set z=0!z!
for /l %%j in (%n%,-1,%%i) do (set/a min=max+1&set max=9!max!)
if !max! equ 9 set/a min=0
for /l %%j in (!min!,1,!max!) do echo !z!%%j
)


[ Last edited by linee on 2009-1-4 at 18:59 ]
9 发表于 2009-08-04 08:48 ·  中国 广东 广州 天河区 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
哈 6楼的就是 分别用两个变量 记录了 for的层数 和 结尾的括号数

%var%表达后 所代表的字符就被当成命令执行了。

我将其视为批处理的一优点,

1。 在未知句子镶嵌数量的情况下,可以利用字符串处理进行临时镶嵌。
2。 省了很多字符,就像上面的,多层For句子都放变量里面了

参考一篇发过的文章
http://www.cn-dos.net/forum/viewthread.php?tid=45240

[ Last edited by 523066680 on 2009-8-4 at 08:52 ]
10 发表于 2009-08-04 23:25 ·  中国 福建 龙岩 电信
初级用户
积分 30
发帖 15
注册 2008-06-23 23:11
17年会员
UID 120750
性别 男
状态 离线
@echo off&setlocal enabledelayedexpansion&set y=9999999999
set/p n=input a number:
for /l %%i in (1,1,!y:~-%n%!) do (set qq=0000000000%%i
echo !qq:~-%n%!)
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
netbenton +5 2009-08-05 07:53
论坛跳转: