標簽歸檔: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.okfdzs1868.com")

域名統計篩選程序,生成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.okfdzs1868.com/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.okfdzs1868.com/products/yuming-tj-to-excel-html-xls.rar

轉帖請注明出處:域名統計篩選程序,生成Excel文件(.xls)或HTML網頁文件(.html)(http://www.okfdzs1868.com/p/yuming-tj-to-excel-html-xls)