中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]js与vbs互转的wsf脚本 上一主题 | 下一主题
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『楼 主』:  [原创]js与vbs互转的wsf脚本

<!-- 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>


2008-2-1 14:12
查看资料  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

我晕~还以为是…… 原来是。。。生成的VBS在自己下面有JS的源码,自己读自己然后过滤写到TEMP去。。。再调用。。 不过WSF文件还是头一次看。。。开始还以为是flash呢。 这个倒是挺新的……


2008-2-1 14:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 3 楼』:  

Originally posted by slore at 2008-2-1 02:48 PM: 我晕~还以为是…… 原来是。。。生成的VBS在自己下面有JS的源码,自己读自己然后过滤写到TEMP去。。。再调用。。
我想,通过把vbs和js的语句表达严格对应来实现互相转换恐怕是行不通的吧?


2008-2-1 18:57
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: