Any2, a vbs script that converts any file into batch processing Bat.vbs

Time:2021-2-21

by [email protected]

The advantage of coding data with Base64 is that it compresses the size (relative to bin2str), but the disadvantage is that it increases the processing time and script complexity.
Since the bottleneck of efficiency is the generation of VBS in bat, it is generally cost-effective.
For writing documents ADODB.Recordset , much better than debug.
Most of the things are done by scripts. Batch processing just uses echo to generate scripts.
The advantage of echo is that you can copy and paste all the files into the CMD shell to upload them.

Copy codeThe code is as follows:
Any2Bat.vbs by zzzEVAzzz 
on error resume next 
set arg=wscript.arguments 
if arg.count=0 then wscript.quit 
with CreateObject(“ADODB.Stream”) 
.type=1:.open:.loadfromfile arg(0):bs=.read:l=.size:.close 
end with 
if err.number<>0 then wscript.quit 
set fso=CreateObject(“Scripting.FileSystemObject”) 
with fso.opentextfile(arg(0)&”.bat”,2,true) 
if err.number<>0 then wscript.quit 
.writeline “@echo bs=_>xx.vbs” 
for k=1 to l step 129 
.write “@echo “”” 
.write b64b(midb(bs,k,129)) 
.writeline “””+_>>xx.vbs” 
next 
.writeline “@echo “”””:set rs=CreateObject(“”ADODB.Recordset””)>>xx.vbs” 
.writeline “@echo set ado=CreateObject(“”ADODB.Stream””)>>xx.vbs” 
.writeline “@echo l=len(bs):ss=””””:for k=1 to l step 4096:ss=ss+ub64(mid(bs,k,4096)):next:l=len(ss)>>xx.vbs” 
.writeline “@echo rs.fields.append “”b””,205,l/2:rs.open:rs.addnew:rs(“”b””)=ss+chrb(0):rs.update>>xx.vbs” 
.writeline “@echo ado.mode=3:ado.type=1:ado.open:ado.write rs(“”b””).getchunk(l/2)>>xx.vbs” 
.writeline “@echo ado.savetofile “””+fso.getfilename(arg(0))+”””,2:ado.close>>xx.vbs” 
.writeline “@echo function ub64(s):dim t(4),b(3):ub64=””””:n=len(s):r=2 >>xx.vbs” 
.writeline “@echo if n mod 4^<^>0 then exit function:end if:for i=1 to n step 4:for j=0 to 3 >>xx.vbs” 
.writeline “@echo a=asc(mid(s,i+j,1)):if a=43 then:a=62:else if a=47 then:a=63:else if a^>47 and a^<58 then:_>>xx.vbs” 
.writeline “@echo a=a+4:else if a=61 then:a=0:if r=2 then r=j-2:end if:else if a^>64 and a^<91 then:_>>xx.vbs” 
.writeline “@echo a=a-65:else if a^>96 and a^<123 then:a=a-71:else:exit function:_>>xx.vbs” 
.writeline “@echo end if:end if:end if:end if:end if:end if:t(j)=a:next>>xx.vbs” 
.writeline “@echo b(0)=t(0)+t(1)*64 mod 256:b(1)=t(1)\4+t(2)*16 mod 256:b(2)=t(2)\16+t(3)*4 >>xx.vbs” 
.writeline “@echo for j=0 to r:if b(j)^<16 then ub64=ub64+””0″”:end if:ub64=ub64+hex(b(j))>>xx.vbs” 
.writeline “@echo next:next:end function>>xx.vbs&&cscript.exe //nologo xx.vbs&del xx.vbs” 
end with 
const b64 = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/” 
function b64b(bin) 
b64b=”” 
n=lenb(bin) 
for i=1 to n step 3 
a=ascb(midb(bin,i,1)) 
b64b=b64b+mid(b64,a mod 64+1,1) 
if i<n then 
b=ascb(midb(bin,i+1,1)) 
b64b=b64b+mid(b64,(a\64+b*4)mod 64+1,1) 
if i+1<n then 
c=ascb(midb(bin,i+2,1)) 
b64b=b64b+mid(b64,(b\16+c*16)mod 64+1,1) 
b64b=b64b+mid(b64,c\4+1,1) 
else 
b64b=b64b+mid(b64,b\16+1,1) 
b64b=b64b+”=” 
end if 
else 
b64b=b64b+mid(b64,a\64+1,1) 
b64b=b64b+”==” 
end if 
next 
end function 

The usage is very simple, just one parameter – the full path of the file to be converted.
You can also drag and drop files directly onto the VBS icon.