Showing posts with label vbscript. Show all posts
Showing posts with label vbscript. Show all posts

Jan 23, 2008

自訂副檔名搜尋

SearchFileByExt.vbs

start = Now
WScript.Echo("Start:" & start)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Extension = 'mp3' OR Extension = 'wma'")
For Each objFile in colFiles
Wscript.echo(objFile.Caption)
'objFile
'objFile.Delete
Next
finish = Now
WScript.Echo("Finish:" & finish)
WScript.Echo("Cost:" & DateDiff("n",start,finish))

vbscript 版 wget

PingList.vbs

<package>
<job>
<runtime>
<named
name="SourceUrl"
helpstring="HTTP檔案位址"
type="string"
required="true"
/>
<named
name="DestinationFile"
helpstring="儲存檔案位址"
type="string"
required="true"
/>
<example>
Example : wget /SourceUrl:"http://xxx/xxx.exe" /DestinationFile:"C:\Documents and Settings\All Users\桌面\xxx.exe"
</example>
<description>
用途:下載Web檔案
版本:1.0
作者:Parkghost</description>
</runtime>
<SCRIPT language="VBScript">
If WScript.Arguments.Named.Exists("SourceUrl") And WScript.Arguments.Named.Exists("DestinationFile") Then
strUrl = WScript.Arguments.Named.Item("SourceUrl")
strFile = WScript.Arguments.Named.Item("DestinationFile")
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const ForWriting = 2
Dim web, varByteArray, strData, strBuffer, lngCounter, ado
Err.Clear
Set web = Nothing
Set web = CreateObject("WinHttp.WinHttpRequest.5.1")
If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest")
If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP")
If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP")
web.Open "GET", strURL, False
web.Send
If Err.Number <> 0 Then
SaveWebBinary = False
Set web = Nothing
WScript.Quit
End If
If web.Status <> "200" Then
SaveWebBinary = False
Set web = Nothing
WScript.Quit
End If
varByteArray = web.ResponseBody
Set web = Nothing

'Save the file
'On Error Resume Next
Set ado = Nothing
Set ado = CreateObject("ADODB.Stream")
If ado Is Nothing Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(strFile, ForWriting, True)
strData = ""
strBuffer = ""
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
Next
ts.Close
Else
ado.Type = adTypeBinary
ado.Open
ado.Write varByteArray
ado.SaveToFile strFile, adSaveCreateOverWrite
ado.Close
End If
SaveWebBinary = True
Else
WScript.Arguments.ShowUsage()
End if
</SCRIPT>
</job>
</package>

解決vbscript len function 無法判斷 double byte 字元


strText = ("中文123")
WScript.Echo(strText & ":" & Len(strText))
WScript.Echo(strText & ":" & newLen(strText))

Function newLen(text)
oldlen = Len(text)
newLen = 0
For i = 1 To oldlen
If Asc(Mid(text,i,1)) > 0 Then
newLen = newLen + 1
Else
newLen = newLen + 2
End If
Next
End Function

網路連線測式(Ping by List)

PingList.vbs
Msg = "站點" & vbTab & paddingStr("位址",27) & vbTab & paddingStr("IP",15) & vbTab & "回應時間" & vbNewLine
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objXML = CreateObject("Microsoft.XMLDOM")
objXML.async = False
objXML.Load "ipList.xml"
If objXML.parseError.errorCode <> 0 Then
 WScript.Echo("設定檔載入錯誤")
End If

Set objList = objXML.getElementsByTagName("*")
Set nodes = objList.item(i).selectSingleNode("//site").childNodes

For Each node In nodes
 Dim ProtocolAddress
 Dim ResponseTime
 Set objNamedNodeMap = node.attributes  
 Set objPing = objWMIService.ExecQuery("select * from Win32_PingStatus where address = '" & node.text & "'")
 For Each objStatus in objPing
  ProtocolAddress = objStatus.ProtocolAddress
  ResponseTime = objStatus.ResponseTime
 Next 
 Msg = Msg & objNamedNodeMap.item(0).text & vbTab & paddingStr(node.text,25) & vbTab & paddingStr(ProtocolAddress,15) & vbTab & ResponseTime & vbNewLine 
Next
WScript.Echo(Msg)

Function paddingStr(str,lenght)
 If Len(str) > lenght then
  paddingStr = str
 Else
  'todo:double byte analysis
  paddingStr = str &  Space(lenght - Len(str))
 End If
End Function


ipList.xml
<?xml version="1.0" encoding="big5"?>
<site>
<item name="HiNet">www.hinet.net</item>
<item name="Yahoo">tw.yahoo.com</item>
<item name="Pchome">www.pchome.com</item>
</site>