Any2Bat.vbs
2014-04-08 20:32
441 查看
很久以前写过一个Any2Bat,作用是把任何文件变成echo版,以便通过远程shell上传。
http://hi.baidu.com/zzzevazzz/blog/item/75b8b50a118b6c1e94ca6b36.html新版本改进如下:
1,增加数据压缩功能(使用系统自带的makecab.exe和expand.exe)。
2,Base64编码采用Microsoft.XMLDOM,速度快,代码更简洁。
3,echo生成临时脚本时文件名不带后缀,避免杀毒软件频繁扫描,提高效率。
'Any2Bat.vbs v2.0 by zzzEVAzzz
Set fso = CreateObject("Scripting.FileSystemObject")
Set shl = CreateObject("WScript.Shell")
Set xml = CreateObject("Microsoft.XMLDOM")
Set stm = CreateObject("ADODB.Stream")
Set arg = WScript.Arguments
If arg.Count = 0 Then WScript.Quit
If Not fso.FileExists(arg(0)) Then WScript.Quit
Set f = fso.GetFile(arg(0))
rr = shl.Run("makecab.exe """ & f.Path & """ xx.cab", 0, True)
If rr <> 0 Then WScript.Quit
Set el = xml.createElement("cab")
el.dataType = "bin.base64"
stm.Open : stm.Type = 1
stm.LoadFromFile "xx.cab"
el.nodeTypedValue = stm.Read
txt = Replace(el.text, vbLf, ">>xx" & vbNewLine & "@echo ")
stm.Close
fso.DeleteFile "xx.cab"
With fso.OpenTextFile(f.Path & ".bat", 2, True)
.WriteLine "@echo ^<package^>^<cab xmlns:dt=""urn:schemas-microsoft-com:datatypes"" dt:dt=""bin.base64""^> >xx"
.Write "@echo " : .Write txt : .WriteLine ">>xx"
.WriteLine "@echo ^</cab^>^<job^>^<script language=""VBScript""^> >>xx"
.WriteLine "@echo Set xml = CreateObject(""Microsoft.XMLDOM"")>>xx"
.WriteLine "@echo xml.load WScript.ScriptFullName>>xx"
.WriteLine "@echo Set stm = CreateObject(""ADODB.Stream"")>>xx"
.WriteLine "@echo stm.Open : stm.Type = 1 >>xx"
.WriteLine "@echo stm.Write xml.documentElement.childNodes.item(0).nodeTypedValue>>xx"
.WriteLine "@echo stm.SaveToFile ""xx.cab"">>xx"
.WriteLine "@echo ^</script^>^</job^>^</package^> >>xx"
.WriteLine "rename xx xx.wsf"
.WriteLine "cscript.exe //nologo xx.wsf"
.WriteLine "expand.exe -r xx.cab>nul"
.Write "del xx.wsf & del xx.cab"
.Close
End With
用法不变。以文件名为参数,或拖放文件到Any2Bat.vbs的图标上。
文件大小以生成的bat不超过500K为宜。
相关文章推荐
- [转]VS编程中找不到Microsoft.Office.Core、Microsoft.Office.Interop.Excel、VBIDE
- vb 去掉以“//”为注释行的内容
- VB删除自身
- VB.Net 操作打印机
- VBS数组
- AR vb
- VBA标准模块与类模块
- vb打包问题
- EXCEL VBA学习
- VB中数据占几个字节
- VB如何才能在win8下运行?
- VB2013字符串操作命令Left,Right命令的替代
- VB2013读EXCEL表确定Sheet的有效内容
- C#与VB的基础比较
- VBS循环控制
- vbs中的循环
- vbsedit
- 使用VBA读取指定Excel文件指定Sheet指定单元格的内容
- VBS中的转义符
- VBA ArrayList类 还可以继续扩展