标签归档:vbs

模拟键盘输入的脚步,让老四的键盘钢琴自动演奏

在老四(http://www.0097.org/laos/)的博客上看到一电子钢琴,下边还有千千阙听的曲子,想马上弹奏一曲,好累啊,音调好像也不对,写了一个VBScript的脚本,给他留了言。结果该文章不显示了,提示找不到文件

Windows虚拟主机的悲哀啊,因为网页中有了Wscript脚本,结果被主机非屏蔽了,或说被杀毒软件Killer了,以前用Win主机生成的时候也出现过这种问题,真的不是故意的,再次像老四抱歉。

下面是老四的键盘钢琴

下面保存为vbs,运行后,打开本页面即可用该脚本模拟键盘按键,听到千千阙听

Sub start
	'每个空格代表演示1000毫秒,两个按键间隔400毫秒
	'童话
	'keys="LONOL LONOL LONO OOMMLL ONOL LQPPO LONOM MMOTS PPRRQQ QQNPOONO ONOR LSRQPPPRRQQ QQVUTUV VPOT TTSSSLSRQQRQ QRQ RQPOOQST TTSPPRQ OQST TTSPPRQRQPO PQMMOONO"
	'心语心愿
	'keys="TVUTSTQ TSTVUVUTUV VWXXXXW VUTUS TVUTST QSTXWVUV VUTTTTSSTQSSTXWVUVV VUTTSUT"
	'会呼吸的痛
	'keys="STVTXXTW  WWVUVWXWSV VUTUVRRRVVWVSSS SYXWXX STVTXXTW WWVUVWXWSVVVUTUVRRRVVWVSSS STUVVUVV"
	'欢乐颂
	'keys="J J K L L K J I      H H I J J I IJ J K L L K J I      H H I J I H H     I I J H I J K J H     I J K J I H I E    J J K L L K J        I H H I J I H H"
	'千千阙歌
	keys="HHIJ LMONNNLJ IIIJK MOQPPNLHHIJ LMONNNLJ IIIJK MOQPPNLMLMLMNNMN PPPPNOPQQQPPPOQ NLMLMOPQQPQ QPOP OMM LMOP QQPQ QSTSQQQQPPOPOM  QQRQPOP QQ Q PPOP OMOO"
	'婚礼进行曲
	'keys="HKKK HLJK HKNNMLKJKL HKKK HLJK HKMOMKILMKNMLII JKLL NMLII JKLL HKKK HLJK HKMOMKILMKILMKK"
	keydb=split(keys," ")
	for each keyrs in keydb
		for i=1 to len(keyrs)
			sendkey mid(keyrs,i,1)
			wscript.sleep 400
		next
		wscript.sleep 1000
	next
End Sub
 
Sub sendkey(k)
	wshell.sendkeys k
End Sub
 
do while startnum=0 or startnum=2
	startnum=msgbox("你真的要听苗启源为您演奏吗?",1)
loop
 
set wshell=createobject("Wscript.Shell")
start
gourl=msgbox("结束了,是不是想去苗启源家看看",1)
if gourl=1 then wshell.run("http://www.miaoqiyuan.cn")

域名统计筛选程序,生成Excel文件(.xls)或HTML网页文件(.html)

朋友手中有上千个域名,现在cn域名续费涨价了,准备抛弃一些。让我帮忙写个小程序来筛选一下,看看那个有留下的价值。当时我放出大话,20分钟搞定。最初设想的是生成Excel文件,通过Excel中的筛选来统计。

代码如下(附件包中的excel.vbs):

'域名统计程序,生成excel结果
'通过VBS获取当前目录,替代ASP中的Server.Mappath
Function Mappath(v)
 Mappath=fso.getAbsolutePathName(v)
End Function
 
'写得一个函数,用于判断字符串中是否含有数字。
Function iszajiao(v)
	for i=1 to len(v)
		if isnumeric(mid(v,i,1)) then
			iszajiao=1
			exit for
		end if
	next
End Function
 
'创建一个FSO对象
Set fso=CreateObject("Scripting.FileSystemObject")
 
'判断是否有生成的Excel结果ok.xls,如果有,则删除
if fso.fileexists(mappath("ok.xls")) then fso.getfile(mappath("ok.xls")).delete
 
'创建一个ok.xls
set fto=fso.createtextfile(mappath("ok.xls"),2)
wscript.echo "吴哥哥,请稍等,我正在为您工作中。。。"
fto.writeline "域名	后缀	位数	类型"
 
'寻找当前目录中的所有txt文件,如果有则依次打开
for each file in fso.getfolder(mappath(".")).files
	if Lcase(fso.getExtensionName(file))="txt" then
		set db=fso.opentextfile(file,1)
 
		'如果不是在txt文件的结尾,则循环读取
		do while not db.atendofstream
			rs=db.readline
 
			'获取域名的位数,即第一次出现.的位置-1
			ws=cint(instr(rs,".")-1)
 
			'防止本行数据为空行
			if ws>=1 then
				rsi=rsi+1
 
				'获取域名
				ym=left(rs,ws)
 
				'获取域名后缀
				hz=replace(rs,ym&".","")
 
				'分析域名类型,如果ym为数字则为数字
				if isnumeric(ym) then
					lx="数字"
				'否则,如果出现数字则为杂交
				elseif iszajiao(ym)=1 then
					lx="杂交"
				'其他类型就剩下字母了
				else
					lx="字母"
				end if
				'输出
				fto.writeline ym&"	"&hz&"	"&ws&"	"&lx
			end if
		loop
	end if
next
fto.close
set fto=nothing
msgbox "吴哥哥,我帮你完成工作了,怎么谢我呢?请我吃MM吧"

正准备邀功请赏的时候,朋友竟然说没用过Excel,狂吐血,并且还不想用数据库。这儿就有点复杂了,初步设想生成HTML文件,然后把数据保存到数组中,根据Select的选项来现在最终结果。

我是从两个方便考虑的,生成网页部分由Javascript控制,这些Javascript最终代码由VBScript来生成。

思路明确了,首先来考虑由Javascript控制的网页。演示页面:http://www.miaoqiyuan.cn/products/js-array-ymtj.html

<html><head><title>生成结果</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script type="text/javascript">
var rs=new Array();
rs[1]=Array('sjtian','cn',6,'字母');
rs[2]=Array('zhaozhetao','cn',10,'字母');
rs[3]=Array('qiangjiaoshu','cn',12,'字母');
rs[4]=Array('bszange','cn',7,'字母');
rs[5]=Array('6688fafa','cn',8,'杂交');
rs[6]=Array('xswjm','cn',5,'字母');
rs[7]=Array('fpjtw','cn',5,'字母');
rs[8]=Array('jssj','js.cn',4,'字母');
rs[9]=Array('chengzhun','com',9,'字母');
rs[10]=Array('yfxqqiu','cn',7,'字母');
</script>
<script type="text/javascript">
var __res,__lx,__ws,__hz,__j,__isrun,__rscount=0;
var __mqy=function(){
	//判断是否在进程中,如果在进程中则退成,否则将进程设为活动
	if(__isrun==1)
		return eval(__sorry("还在运算中,你想累死你的爱机?"));
	else
		__isrun=1;
	//和朋友开个玩笑
	var __mm=confirm("吴哥哥,你确定请我吃MM吗?");
	if(__mm==false)
		return eval(__sorry("好,你不请我吃,那我不工作了"));
	if(typeof(__res)!="object")
		__res=document.getElementById("__res");
 
	//改变字体颜色,背景,提示现在程序正在执行中。
	__res.style.background="#FF0";
	__res.style.color="#F00";
	__res.innerHTML="<p>谢谢吴哥哥请我吃MM,正在生成中,请稍后。。。</p><p>因为数据过多,程序可能执行有点慢,请耐心等候</p>";
 
	//一秒之后执行程序,这样做是因为有时候DOM修改还没有生效,如果数据过多,进入假死状态,用户以为真死机了
	//给程序一秒中的反应时间
	setTimeout("__run()",1000);
}
 
//主要查询程序就是它啦
var __run=function(){
	//获取各个Select的值
	__ws=document.getElementById("_ws").value;
	__hz=document.getElementById("_hz").value;
	__lx=document.getElementById("_lx").value;
	__j="";
	for(i=1;i<rs .length;i++){
		//设置输出HTML
		var _isok="<li>"+rs[i][0]+"."+rs[i][1]+"";
		//只有不符合一下条件的才是符合我们要筛选的结果
		//虽然只有一个if,大家可以仔细看看,包含了十几种情况
		if(__ws!="all"&&__ws!=rs[i][2]||__hz!="all"&&__hz!=rs[i][1]||__lx!="all"&&__lx!=rs[i][3])
			_isok="";
		else
			//如果符合条件,符合条件的结果数加一
			__rscount++;
		//将判读结果附加到__j
		__j+=_isok;
	}
	if(__j=="")
		//如果__j没有改变,说明没有符合的条件记录
		__res.innerHTML="<p>没有找到任何记录</p>";
	else
		//输出符合条件的记录数及筛选结果
		__res.innerHTML="<p class=c>共找到"+__rscount+"条记录。</p>"+__j;
	__res.style.background="#0F0";
	__res.style.color="#000";
	//修改运行状态为未运行
	__isrun=0;
	//修改符合条件记录数为0,供下次查询使用
	__rscount=0;
}
var __sorry=function(t){
	alert(t);
}
</rs></script>
<style type="text/css">
div{width:800px;background:#CCC;border:solid 2px #666;margin-top:10px;padding:10px;}
div p.c{color:#F00;background:#FF0;border:solid #333 2px;padding:5px;}
</style>
</head>
<body>
<div>
按长度筛选:
<select id="_ws">
	<option value="all">不区分长度</option>
	<option value="1">1</option>
	<option value="2">2</option>
	<option value="3">3</option>
	<option value="4">4</option>
	<option value="5">5</option>
	<option value="6">6</option>
	<option value="7">7</option>
	<option value="8">8</option>
</select>
按类型筛选:
<select id="_lx">
	<option value="all">不区分类型</option>
	<option value="字母">字母(abc.com)</option>
	<option value="数字">数字(123.com)</option>
	<option value="杂交">杂交(f8.com)</option>
</select>
按后缀筛选:
<select id="_hz">
	<option value="all">不区分后缀</option>
	<option value="org">org</option>
	<option value="com">com</option>
	<option value="net">net</option>
	<option value="cn">cn</option>
</select>
<input type="button" onclick="__mqy();" value="立即筛选" />
</div>
<div id="__res">
	吴哥哥,你在上边选择你的条件
</div>
</body>
</html>

网页写好了,接下来要做的就是让vbscript脚本读取当前目录中所有的txt文件,来生成html
代码如下(附件包中的js.vbs):

'域名统计程序,生成html结果
'通过VBS获取当前目录,替代ASP中的Server.Mappath
Function Mappath(v)
 Mappath=fso.getAbsolutePathName(v)
End Function
 
'写得一个函数,用于判断字符串中是否含有数字。
Function iszajiao(v)
	for i=1 to len(v)
		if isnumeric(mid(v,i,1)) then
			iszajiao=1
			exit for
		end if
	next
End Function
 
'创建一个FSO对象
Set fso=CreateObject("Scripting.FileSystemObject")
 
'判断是否有生成的结果ok.html,如果有,则删除
if fso.fileexists(mappath("ok.html")) then fso.getfile(mappath("ok.html")).delete
 
'创建一个ok.html
set fto=fso.createtextfile(mappath("ok.html"),2)
wscript.echo "吴哥哥,请稍等,我正在为您工作中。。。" 
scrt="<html><head><title>运行结果</title><meta http-equiv='Content-Type' content='t"
scrt=scrt+"ext/html; charset=gb2312' /><script type='text/javascript'>"
fto.writeline scrt
fto.writeline "var rs=new Array();"
 
'寻找当前目录中的所有txt文件,如果有则依次打开
for each file in fso.getfolder(mappath(".")).files
	if Lcase(fso.getExtensionName(file))="txt" then
		set db=fso.opentextfile(file,1)
 
		'如果不是在txt文件的结尾,则循环读取
		do while not db.atendofstream
			rs=db.readline
 
			'获取域名的位数,即第一次出现.的位置-1
			ws=cint(instr(rs,".")-1)
 
			'防止本行数据为空行
			if ws>=1 then
				rsi=rsi+1
 
				'获取域名
				ym=left(rs,ws)
				if wss="" then wss=ws
				for each wsi in split(wss,"|")
					if cint(wsi)=ws then
						wsu=cint(ws)
						exit for
					end if
				next
				if wsu<>ws then
					wss=wss&"|"&ws
				end if
 
				'获取域名后缀
				hz=replace(rs,ym&".","")
				if hzs="" then hzs=hz
				for each hzi in split(hzs,"|")
					if hzi=hz then
						hzu=hz
						exit for
					end if
				next
				if hzu<>hz then
					hzs=hzs&"|"&hz
				end if
 
				'分析域名类型,如果ym为数字则为数字
				if isnumeric(ym) then
					lx="数字"
				'否则,如果出现数字则为杂交
				elseif iszajiao(ym)=1 then
					lx="杂交"
				'其他类型就剩下字母了
				else
					lx="字母"
				end if
				fto.writeline "rs["&rsi&"]=Array('"&ym&"','"&hz&"',"&ws&",'"&lx&"');"
			end if
		loop
	end if
next
scrt="</script><script type='text/javascript'>var __res,__lx,__ws,__hz,__j,__isrun,"
scrt=scrt+"__rscount=0;var __mqy=function(){if(__isrun==1)return eval(__sorry('还在"
scrt=scrt+"运算中,你想累死你的爱机?'));else __isrun=1;var __mm=confirm('吴哥哥,你"
scrt=scrt+"确定请我吃MM吗?');if(__mm==false)return eval(__sorry('好,你不请我吃,那"
scrt=scrt+"我不工作了'));if(typeof(__res)!='object')__res=document.getElementById('__"
scrt=scrt+"res');__res.style.background='#FF0';__res.style.color='#F00';__res.innerHTM"
scrt=scrt+"L='<p>谢谢吴哥哥请我吃MM,正在生成中,请稍后。。。</p><p>因为数据过多,程序"
scrt=scrt+"可能执行有点慢,请耐心等候</p>';setTimeout('__run()',1000);};var __run=funct"
scrt=scrt+"ion(){__ws=document.getElementById('_ws').value;__hz=document.getElementById"
scrt=scrt+"('_hz').value;__lx=document.getElementById('_lx').value;__j='';for(i=1;i<rs ."
scrt=scrt+"length;i++){var _isok='<li>'+rs[i][0]+'.'+rs[i][1]+'';if(__ws!='all'&&__"
scrt=scrt+"ws!=rs[i][2]||__hz!='all'&&__hz!=rs[i][1]||__lx!='all'&&__lx!=rs[i][3])_isok=''"
scrt=scrt+";else __rscount++;__j+=_isok;}if(__j=='')__res.innerHTML='<p>没有找到任何记录< "
scrt=scrt+"/p>';else __res.innerHTML='</p><p class=c>共找到'+__rscount+'条记录。</p>'+__j;__res"
scrt=scrt+".style.background='#0F0';__res.style.color='#000';__isrun=0;__rscount=0;};var __so"
scrt=scrt+"rry=function(t){alert(t);}</rs></script><style type='text/css'>div{width:800px;backgroun"
scrt=scrt+"d:#CCC;border:solid 2px #666;margin-top:10px;padding:10px;}div p.c{color:#F00;backg"
scrt=scrt+"round:#FF0;border:solid #333 2px;padding:5px;}</style></head><body><div>按长度筛选:"
scrt=scrt+"<select id='_ws'><option value='all'>不区分长度</option>"
fto.writeline scrt
scrt=""
for each wsi in split(wss,"|")
	fto.writeline "<option value='"&wsi&"'>"&wsi&"</option>"
next
scrt="</select> 按类型筛选<select id='_lx'><option value='all'> 不区分类型</option><option valu"
scrt=scrt+"e='字母'>字母(abc.com)</option><option value='数字'>数字(123.com)</option><option "
scrt=scrt+"value='杂交'>杂交(f8.com)</option></select> 按后缀筛选<select id='_hz'><option value"
scrt=scrt+"='all'>不区分后缀</option>"
fto.writeline scrt
scrt=""
for each hzi in split(hzs,"|")
	fto.writeline "<option value='"&hzi&"'>"&hzi&"</option>"
next
scrt="</select><input type='button' onclick='__mqy();' value='立即筛选' /></div><div id='__res'>"
scrt=scrt+"吴哥哥,你在上边选择你的条</div></body></html>"
fto.writeline scrt
fto.close
set fto=nothing
msgbox "吴哥哥,我帮你完成工作了,怎么谢我呢?请我吃MM吧"

忙了大半个晚上终于搞定了。哈哈,启源果然是天才(YY一下)。

本程序可以智能的读取程序所在目录中的所有txt文件,数据格式为每行一个域名。

现在cn域名续费涨价了,如果你手上也有很多域名,不妨用本程序来筛选一下,我已经打包成rar文件,供大家下载。
下载地址:http://www.miaoqiyuan.cn/products/yuming-tj-to-excel-html-xls.rar

转帖请注明出处:域名统计筛选程序,生成Excel文件(.xls)或HTML网页文件(.html)(http://www.miaoqiyuan.cn/p/yuming-tj-to-excel-html-xls)