Board logo

标题: [文本处理] 如何用批处理生成多个固定长度由大小写字母数字指定符号组成的密码字符串 [打印本页]

作者: snowwolf    时间: 2016-11-14 16:17     标题: 如何用批处理生成多个固定长度由大小写字母数字指定符号组成的密码字符串

本帖最后由 pcl_test 于 2016-11-15 07:41 编辑

我要生成长度为12的密码,取自S1=[a-z] S2=[A-Z] S3=[0-9] S4=[!@#$%^&*()]
S1-S4每个里边随机取3个值 生成最后的密码,一次生成100个 怎么弄
作者: snowwolf    时间: 2016-11-14 16:18

例如abcABC123!@#
作者: Batcher    时间: 2016-11-14 18:01

试试这个
http://bbs.bathome.net/thread-11883-1-1.html#pid75468
作者: codegay    时间: 2016-11-15 05:43

本帖最后由 codegay 于 2016-11-15 05:45 编辑

我复习一下python,
这并不是个难题
  1. #2016年11月15日5:30:21 codegay
  2. #生成随机密码
  3. from random import sample
  4. az = 'abcdefghijklmnopqrstuvwxyz'
  5. AZ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  6. digits = '0123456789'
  7. punctuation = '!@#$%^&*()'
  8. for r in range(100):
  9.     s1 = sample(az,3)
  10.     s2 = sample(AZ,3)
  11.     s3 = sample(digits,3)
  12.     s4 = sample(punctuation,3)
  13.     password = ''.join(s1+s2+s3+s4)
  14.     print(password)
  15.    
复制代码
输出:
  1. mnTNC376!&$
  2. qyiOMQ629!$&
  3. sjbRYN957!&(
  4. jcaFZI168)@(
  5. ygwSPO350%($
  6. hirKAN986&@^
  7. sgmAJI486!($
  8. hydKBN641^$)
  9. rowHTL435@$)
  10. qxsMXT845%@&
  11. mlvSWQ820^#@
  12. uwsXVI094^!(
  13. ketGFV216)!#
  14. yebYQS320^($
  15. xmiGUS564*#!
  16. kinDGK819)@#
  17. pyiGYF856#*%
  18. jbcIXM593!&*
复制代码

作者: snowwolf    时间: 2016-11-15 10:21

回复 4# codegay


    我不会python,但是很感谢,看python这些代码貌似很好理解
作者: pcl_test    时间: 2016-11-15 10:30

本帖最后由 pcl_test 于 2016-11-15 11:58 编辑
  1. @echo off
  2. rem win7及以上系统运行
  3. set "char=!@#$%%^&*()"
  4. powershell -c "1..100|%%{$n=0;(&{65..90|Get-Random -Count 6|%%{if(++$n -le 3){(''+[char]$_).ToLower()}else{[char]$_}};0..9|Get-Random -Count 3;'%char%'.ToCharArray()|Get-Random -Count 3}) -join ''}"
  5. pause
复制代码

作者: snowwolf    时间: 2016-11-15 10:35

回复 3# Batcher


    恩,这个确实很强大,考虑的也比较全
作者: pcl_test    时间: 2016-11-15 11:52

  1. //&cls&cscript -nologo -e:jscript "%~f0"&pause&exit
  2. function r(str, n){
  3.     var s='';
  4.     if(n<=str.length){
  5.         s=str.split('').sort(function(){return Math.random()-.5}).join('').substr(0,n);
  6.     }else{
  7.         for(var i=0;i<n;i++){
  8.             s+=str.charAt(Math.floor(Math.random()*(str.length)));
  9.         }
  10.     }
  11.     return s
  12. }
  13. var a='abcdefghijklmnopqrstuvwxyz';
  14. var b='0123456789';
  15. var c='!@#$%^&*()';
  16. for(var i=0;i<100;i++){
  17.    WSH.Echo(r(a, 3)+r(a, 3).toUpperCase()+r(b, 3)+r(c, 3));
  18. }
复制代码

作者: codegay    时间: 2016-11-15 12:29

本帖最后由 codegay 于 2016-11-15 12:31 编辑

python
模仿版主的来个一行流,不是lisp,但是比lisp括号多:
  1. from random import sample
  2. [''.join(map(chr,sample(range(97,123),3) + sample(range(65,91),3))) + ''.join(sample('0123456789',3) + sample('!@#$%^&*()',3)) for r in range(100)]
复制代码

作者: snowwolf    时间: 2016-11-15 17:53

回复 8# pcl_test

非常感谢,完全符合了我的需求。
作者: snowwolf    时间: 2016-11-15 17:55

回复 6# pcl_test


  非常感谢,代码简短,符合我的需求




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2