存档
最近有个工作,知道了域名,把ip导出来,大约800多条记录,一个一个查麻烦了。有没有其他方法能让asp通过域名查IP呢?
在网上搜索了一下,asp通过域名查ip需要安装一个TCPIP.DNS的组件。我下载了一个测试了一下,效率并不是很高。
一般查询域名的ip的方法是ping一下,得到一个ip。我们先用VBScript测试。
Function strCut(strContent,StartStr,EndStr,CutType)
Dim strHtml,S1,S2
strHtml = strContent
On Error Resume Next
Select Case CutType
Case 1
S1 = InStr(strHtml,StartStr)
[...]
因为工作需要,经常需要操作数据转换的工作。比如:从dz导入到pw,或从新云导入到5ucms,把数据从这个表导入到那个表。操作的多了,认为自己对数据库转化还是有一定的研究的,今天写出了,希望能对做同样工作的朋友一些帮助或者启发。
一般我完成数据库转换的脚本选择vbscript。原因吗,简单当然是一个很重要的因素,更重要的常用的数据库(如:MySQL)都有ADO的驱动。
数据库转化第一步,先要确定目的数据库的类型和当前数据库的类型。如果access数据库转换成mysql数据库。则需要先去下载MySQL ADO的驱动。
第二步,连接好数据库了,现在要分析数据库对应的字段之间的关系。如果能把需要操作的数据表的字段导出来应该能快很多。既然选择了vbscript脚本,我们就让他来帮忙。
‘Auth:猫七(Miaoqiyuan.cn)
‘outTableCol(表名)
‘Desc:返回某表的所有字段
function outTableCol(tbl)
tablesCol=""
set rs=createobject("ADODB.Recordset")
rs.open "select top 1 * from "&tbl,conn,1,1
for i=0 to rs.fields.count-1
tablesCol=tablesCol & rs.fields(i).name & ","
next
outTableCol=tablesCol
rs.close
set rs=nothing
end function
直接使用Wscript.echo outTableCol(表名),哈哈,表明全输出来了(最好将vbscript的脚本宿主改成cscript)。
第三步,字段的对应关系分析好了,自然要进入实质性的过程了-插入数据。
insert into 语句?No,我们用ADODB.Recordset。使用MySQL数据库的使用ADODB也可以使用哦,这也是我使用vbscript的另一个原因,vbscript对ado的兼容性不用我说了吧。。。确定了用ADODB.Recordset,写这种Rs(..)=Rs(..)的方式也是挺麻烦的,现在我们再次请vbscript出山。
‘Auth:猫七(Miaoqiyuan.cn)
‘CreateRsStr(字段名,用’,'分隔,两个字段间的转换用=>)
‘例如:
‘CreateRsStr "d_id,d_dme" #Rs1("d_id")=Rs2("d_id")
‘CreateRsStr "d_id=>c_id" [...]
PushWeb,应该算是我自造的一个词,Push发送,PushWeb则是把采集到的数据发送到站点的一个方案,临时使用vbscript脚本编写。那有的朋友可能会说CMS后台之类的,或者采集软件直接发上来不更好吗?原因如下:
CMS后台,来回复制好麻烦,而且容易出错。复制一篇两篇还可以,如果1000,10000呢?
采集软件发送,这个呢?如果信息都是采集的,按原来的列表顺序原封不动的发上来,恐怕。。。。而且在采集软件了并不是很方便的控制。
PushWeb的好处,可以同时发送数据到同一台服务器上的多个站点。为什么不用asp?因为一般iis站点,我习惯每个站点权限独立,假如pushWeb拥有所有站点的权限,安全性可能会降低。而且同时查询较多数据时,可能占用cpu过多,而影响web站点,而wscript可以通过累了sleep一下。另外后期准备为站点加些计划任务(比如自动生成,现在还是Beta0.1,仅供发布信息),这样只需要一个进程就可以了。
实现方法:
‘pushWeb beta0.1
‘刷新时间
const pushWeb_flush_Time=10000
‘数据库路径
const pushWeb_dbPath=”D:\WebDesign\Products\pushWeb\pushWebDB.mdb”
function pushWeb()
dim conn,rs,push_id,push_webid,push_sql
dim web_db,web_name
dim push_Arr,push_str
set conn=createobject(“ADODB.connection”)
conn.open “provider=microsoft.jet.oledb.4.0;data source=”&pushWeb_dbPath
set rs=conn.execute(“select push_id,push_webid,push_sql from push”)
if rs.eof then
push_id=0
wscript.echo “没有更新,”&pushWeb_flush_Time/1000&”秒后再检查…”
else
push_id=rs(0)
push_webid=rs(1)
push_sql=rs(2)
end if
rs.close
set rs=nothing
if push_id0 then
conn.execute(“delete from push where push_id=”&push_id)
set rs=conn.execute(“select web_name,web_db from web where web_id=”&push_webid)
if not rs.eof then
web_name=rs(0)
web_db=rs(1)
else
wscript.echo “错误的任务请求,”&pushWeb_flush_Time/1000&”秒后再检查…”
end if
rs.close
set rs=nothing
conn.close
if web_db”" [...]
刚才发布了一篇文章:ASP/VBScript 汉字转拼音程序,只支持GBK(http://www.miaoqiyuan.cn/p/vbscript-gbk-pinyin)。你可能已经猜出来了,为了SEO优化而转换为拼音的路径,用这个函数可以很方便的解决了。但是中国文字博大精深,相同读音的字太多了,那么上边说的方法生成的路径可能就要冲突了,怎么办呢?在此,我给大家提供一个解决方法。因为是windows平台,使用vbscript脚本来实现。
实际很简单。先用like查询是否有类似的路径,并记录结果数tms。如果tms=0怎用拼音,如果结果数大于1,则用拼音&结果数的方法。很简单吧,给出的代码如下:
‘cscript [thisScriptName.vbs]
set conn=createobject(“ADODB.connection”)
conn.open “provider=microsoft.jet.oledb.4.0;data source=D:\miaoqiyuan\Products\labs\故事\dat\db.mdb”
‘table c
‘n 故事名称
‘d 标题读音
‘g 故事
‘c 出处
‘p 标题首写字母
‘u 故事路径
set rs=createobject(“ADODB.recordset”)
rs.open “select * from c”,conn,3,2
do while not rs.eof
staTme=timer
tms=conn.execute(“select count(u) from c where u like ‘”&rs(“p”)&”%’”)(0)
wscript.echo “正在整理”&rs(“n”)&”中…”
if tms=0 then
rs(“u”)=rs(“p”)
else
rs(“u”)=rs(“p”)&tms
end if
rs.update
wscript.echo “整理”&rs(“n”)&”完毕,用时”&(Timer()-staTme)*1000&”毫秒。”
rs.movenext
loop
实际这个程序很多地方都能用到,以前我也用过,今天在百度上找,竟然没找到。现在发上来,供以后备份。
ASP/VBScript 汉字转拼音程序,只支持GBK,至于原理吗,很简单,不要被Scripting.Dictionary吓倒了,他只是一个字典。至于拼音对应的数字,哈哈,这个要去分析下gbk的编码了。这个也是为什么只支持gbk的原因。如果要实现utf-8转换拼音的方法,直接用一个函数转换一下就可。在次先不贴出,在网上一搜就能找到。
测试某文件中字符串的重复次数,写了很长时间了。经常用到,发上来备用。
可获得某文件中某字符串中某字符串出现的次数~
staTme=timer()
set fso=createobject(“scripting.filesystemobject”)
set t=fso.opentextfile(fso.getabsolutepathname(“in.txt”),1)
set o=fso.opentextfile(fso.getabsolutepathname(“out.xls”),2)
a=”;”
do while not t.atendofstream
p=t.readline
if instr(a,”;”&p&”:”)=0 then
a=a&p&”:1;”
else
at=”"
for each c in split(a,”;”)
if c”" then
if instr(c,p&”:”)>0 then
if instr(c,”:”)>0 then
pt=split(c,”:”)
at=at&pt(0)&”:”&cint(pt(1))+1&”;”
end if
else
at=at&c&”;”
end if
end if
next
a=at
end if
loop
o.write replace(replace(a,”;”,vbCrlf),”:”,” “)
msgbox “导入成功,用时”&(timer()-staTme)*1000&”毫秒。”
staTme=timer()
set fso=createobject(“scripting.filesystemobject”)
set t=fso.opentextfile(fso.getabsolutepathname(“in.txt”),1)
set o=fso.opentextfile(fso.getabsolutepathname(“out.xls”),2)
a=”;”
x=t.readall
for each p in split(x,vbCrlf)
if instr(a,”;”&p&”:”)=0 then
a=a&p&”:1;”
else
at=”"
for each c in split(a,”;”)
if c”" then
if instr(c,p&”:”)>0 then
if instr(c,”:”)>0 then
pt=split(c,”:”)
at=at&pt(0)&”:”&cint(pt(1))+1&”;”
end if
else
at=at&c&”;”
end if
end if
next
a=at
end if
next
o.write replace(replace(a,”;”,vbCrlf),”:”,” “)
msgbox “导入成功,用时”&(timer()-staTme)*1000&”毫秒。”