Board logo

标题: [原创]js与vbs互转的wsf脚本 [打印本页]

作者: s11ss     时间: 2008-2-1 14:12    标题: [原创]js与vbs互转的wsf脚本

CODE:  [Copy to clipboard]
<!-- js<->vbs        {Author:s11ss|From:www.cn-dos.net|Date:2008-2-1} -->

<job>

<script language=vbscript>
With WScript.Arguments
        If .Count<1 Then .ShowUsage:WScript.Quit
        For i=1 To .Count
                s=s&vbCrLf&vbCrLf&i&"."&T(.Item(i-1))
        Next
End With
WScript.Echo s
Function T(file)
        Select Case Right(file,4)
                Case ".vbs",".vbe"        ext="js"
                Case ".jse"        ext="vbs"
                Case Else        If Right(file,3)=".js" Then ext="vbs"
        End Select
        If ext="" Then T="It's not a vbs or js file:  "&file:Exit Function
        Set fso=CreateObject("Scripting.FileSystemObject")
        If Not fso.FileExists(file) Then T="It doesn't exist:  "&file:Exit Function
        str=getResource(ext)
        Set orgf=fso.OpenTextFile(file)
        If ext="vbs" Then
                While Not orgf.AtEndOfStream
                        aline=orgf.ReadLine
                        str=str&vbCrLf&"';"&aline
                Wend
        Else
                str=str&vbCrLf&orgf.ReadAll&vbCrLf&";*/"
        End If
        orgf.Close
        Set newf=fso.CreateTextFile(file&"."&ext,True)
        newf.Write str
        newf.Close
        Set fso=Nothing:Set orgf=Nothing:Set newf=Nothing
        T="Created:   "&file&"."&ext
End Function
</script>

















<!-- usage and resource to use -->
<runtime>
<description>
        vbs2js or js2vbs
        (Other files won't be changed.)
</description>
<unnamed
        name="filename"
        helpstring="The file(s) to be changed."
        many="true"
        required="1"
/>
</runtime>

<resource id=js>
<![CDATA[
var WshShell=new ActiveXObject("WScript.Shell")
var fso=new ActiveXObject("Scripting.FileSystemObject")
var self=fso.OpenTextFile(WScript.ScriptFullName)
var vbsPath=WshShell.ExpandEnvironmentStrings("%tmp%")+"\\t2.1.vbs"
var vbs=fso.CreateTextFile(vbsPath,true)
var found=false
var str=""
while (!self.AtEndOfStream) {
        var aline=self.ReadLine()
        if (found)
                {if (aline!=unescape("%3b")+unescape("%2a")+unescape("%2f")) str=str+aline+"\r\n"}
        else
                if (aline==unescape("%2f")+unescape("%2a")+unescape("%3b")) found=true
}
vbs.Write(str)
vbs.Close()
self.Close()
var arg=""
for(var i=0;i<WScript.Arguments.Count();i++) arg=arg+" "+WScript.Arguments(i)
WshShell.Run(WScript.FullName+" "+vbsPath+arg)
WScript.Sleep(500)
fso.DeleteFile(vbsPath)
/*;
]]>
</resource>

<resource id=vbs>
<![CDATA[
Set WshShell=CreateObject("WScript.Shell")
Set fso=CreateObject("Scripting.FileSystemObject")
Set self=fso.OpenTextFile(WScript.ScriptFullName)
jsPath=WshShell.ExpandEnvironmentStrings("%tmp%")&"\t2.1.js"
Set js=fso.CreateTextFile(jsPath,True)
While Not self.AtEndOfStream
        aline=self.ReadLine
        If Left(aline,2)=Chr(&h27)&Chr(&h3b) Then str=str&Right(aline,Len(aline)-2)&vbCrLf
Wend
js.Write str
js.Close:self.Close
For i=0 to WScript.Arguments.Count-1
        arg=arg&" "&WScript.Arguments(i)
Next
WshShell.Run WScript.FullName+" "+jsPath+arg
WScript.Sleep 500
fso.DeleteFile jsPath
Set WshShell=Nothing:Set fso=Nothing:Set self=Nothing:Set js=Nothing
]]>
</resource>

</job>

作者: slore     时间: 2008-2-1 14:48
我晕~还以为是……

原来是。。。生成的VBS在自己下面有JS的源码,自己读自己然后过滤写到TEMP去。。。再调用。。


不过WSF文件还是头一次看。。。开始还以为是flash呢。
这个倒是挺新的……
作者: s11ss     时间: 2008-2-1 18:57


  Quote:
Originally posted by slore at 2008-2-1 02:48 PM:
我晕~还以为是……

原来是。。。生成的VBS在自己下面有JS的源码,自己读自己然后过滤写到TEMP去。。。再调用。。

我想,通过把vbs和js的语句表达严格对应来实现互相转换恐怕是行不通的吧?




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5