Any2Bat.vbs

很久以前写过一个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为宜。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值