标题: [文本处理] [已解决]请教生成字母加数字能用BAT吗 [打印本页]
作者: kkfgef 时间: 2015-8-29 14:30 标题: [已解决]请教生成字母加数字能用BAT吗
有26个字母{a-Z}和10个数字{0-9}
如果要生成8位字符的,区分大小写,
这样的排列是(26+26+10)8次方=218340105584896个,这218万亿
但相邻不能有两个或以上相同的如{a1b2cc90,这个字符出现了两次cc}
这样的数据可以用PHP来产生吗?
如果生成单个文本数据应该不太可能,得切割成好多份……
这可以用BAT来处理生成多个文本吗
作者: pcl_test 时间: 2015-8-29 17:04
- 1>1/* :
- @echo off
- cscript -nologo -e:jscript "%~f0"
- pause & exit/b
- */
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var i = j = 0;
- var z = '';
- var str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- var arr1 = str.split('');
- for (var a=0;a<arr1.length;a++){
- var arr2 = str.replace(arr1[a],'').split('');
- for (var b=0;b<arr2.length;b++){
- var arr3 = str.replace(arr2[b],'').split('');
- for (var c=0;c<arr3.length;c++){
- var arr4 = str.replace(arr3[c],'').split('');
- for (var d=0;d<arr4.length;d++){
- var arr5 = str.replace(arr4[d],'').split('');
- for (var e=0;e<arr5.length;e++){
- var arr6 = str.replace(arr5[e],'').split('');
- for (var f=0;f<arr6.length;f++){
- var arr7 = str.replace(arr6[f],'').split('');
- for (var g=0;g<arr7.length;g++){
- var arr8 = str.replace(arr7[g],'').split('');
- for (var h=0;h<arr8.length;h++){
- var s = arr1[a]+arr2[b]+arr3[c]+arr4[d]+arr5[e]+arr6[f]+arr7[g]+arr8[h];
- i++;
- z = z + s + '\r\n';
- //每一百万条数据生成一个文本
- if (i==1000000){
- i = 0;
- j++;
- fso.CreateTextFile(j+'.txt',2).WriteLine(z);
- z = '';
- }
- }
- }
- }
- }
- }
- }
- }
- }
复制代码
作者: CrLf 时间: 2015-8-29 17:32
本帖最后由 CrLf 于 2015-8-29 17:43 编辑
纯批来一发- @echo off&setlocal enabledelayedexpansion
- set list=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
- for /l %%a in (1 1 100) do (
- set "password="
- for /l %%b in (0 1 7) do (
- set /a "rand=!random!%%(61 + ^!%%b)"
- for %%z in (!rand!) do (
- set password=!password!!list:~-%%z,1!
- set list=!list:~%%z!!list:~,%%z!
- )
- )
- echo !password!
- )
- pause
复制代码
作者: CrLf 时间: 2015-8-29 17:35
哦,好吧,是排列组合不是产生随机字符串
楼主这是要搞彩虹表吗?
作者: kkfgef 时间: 2015-8-31 13:14
回复 2# pcl_test
非常感谢,可是这个要生成的话,不知我的电脑要开到什么时候了,能不能帮我更改一下生成随机的,比如生成随机一亿条数据(同样每条数据不包括两个相同字符的AA,11,cc……),并每百万一文本,这样也就一百个文件,如果是全部生成那要9亿多M了,电脑放不下……
作者: pcl_test 时间: 2015-8-31 13:25
回复 5# kkfgef
本版规则
1、求助时,务必在顶楼一次性把问题交代清楚,建议给出完整有针对性的样本,样本过大可发网盘分享链接。勿发无意义的标题
2、使用 code 标记把代码部分括起来(单击回复框的 <> 按钮,复制粘贴代码进去),以便复制。问题解决后,请编辑顶楼帖子在标题前面注明[已解决]http://www.bathome.net/thread-3473-1-1.html
3、提问前先使用论坛搜索,相同或类似的问题就无需再发帖了
作者: 回家路上 时间: 2015-8-31 13:38
回复 5# kkfgef
那你就用pcl_test的程序生成100000000的时候退出不就行了吗。
作者: kkfgef 时间: 2015-8-31 14:13
回复 7# 回家路上
问题他这个不是随机的……而是排列的数据,我想要随机生成。
作者: kkfgef 时间: 2015-8-31 14:15
回复 6# pcl_test
还是非常感谢你的思路……
作者: pcl_test 时间: 2015-8-31 14:18
本帖最后由 pcl_test 于 2015-8-31 14:22 编辑
回复 9# kkfgef
以后直接发实际问题,不要浪费别人的时间和精力
一种不是很高效的方法- 1>1/* :
- @echo off&cscript -nologo -e:jscript "%~f0"&pause & exit/b
- */
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var arr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.split('');
- var z = '';
- var j =n =0;
- while (1){
- var s = '';
- for (var i=0;i<8;i++){
- var t = Math.floor(Math.random()*62);
- s = s+arr[t];
- }
- if (!/.*([a-zA-Z\d])\1.*/.test(s)){
- z = z+s+'\r\n';
- j++;
- }
- //每一百万条数据生成一个文本
- if (j==1000000){
- n++;
- fso.CreateTextFile(n+'.txt',2).WriteLine(z);
- j = 0;
- z = '';
- }
- //共生成一百个文本
- if (n==100)break;
- }
复制代码
作者: CrLf 时间: 2015-8-31 17:27
靠靠靠靠,那不就是我在 3 楼理解的意思吗?楼主都不去试代码,我特么还写给你做什么!
---------------------------------------------------------
借 10 楼代码改一下:- 1>1/* :
- @echo off&cscript -nologo -e:jscript "%~f0"&pause & exit/b
- */
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var arr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.split('');
- var j = n = i =0;
- var z = s = c = '';
-
- //共生成一百个文本
- for(n=1;n<=100;n++){
- z = '';
-
- //每一百万条数据生成一个文本
- for(j=10000;j--;){
- s = '';
-
- for (var i=0;i<8;i++){
- var t = Math.floor(Math.random() * (61+!i));
- arr.push(c = arr.splice(t,1)[0]);
- s+=c;
- }
-
- z+=s+'\r\n';
- }
-
- fso.CreateTextFile(n+'.txt',2).WriteLine(z);
- }
复制代码
作者: terse 时间: 2015-9-1 09:27
也来一个- @if(0)==(0) echo off
- cscript -NoLogo -E:JScript %0
- pause & exit /b @end
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var arr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.split('');
- var i = 10000;
- while (i--) {
- var j = 10000,s = '';
- while (j--) {
- s+=arr.sort(function(){ return 0.5 - Math.random()}).join("");
- }
- fso.CreateTextFile(i+'.txt',2).Write(s.match(/\w{8}/g).join('\r\n'));
- }
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |