标题: [问题求助] JS与VBS之间的变量传递 [打印本页]
作者: ohar 时间: 2009-8-6 10:05 标题: JS与VBS之间的变量传递
本帖最后由 pcl_test 于 2016-8-4 13:39 编辑
该怎样用vbs传递一个path变量给js,再调用他,再返回一个结果变量给vbs。下面是一个精典的js
此代码原帖http://bbs.bathome.net/thread-5441-1-1.html
作者: ohar 时间: 2009-8-7 11:24
听说ARGUMENTS能解决,但我搜了论坛的帖子,没有啊。资料里介绍的也没有这样在不同脚本间传递变量的例子啊
作者: zqz0012005 时间: 2009-8-7 20:25
- jsFile = "C:\a.js"
- result = CreateObject("WScript.Shell").Exec( _
- "cscript -nologo -e:jscript """ & jsFile _
- & """ """ & Path & chr(34) ).stdOut.ReadAll
- '如果不设变量jsFile,可以直接
- result = CreateObject("WScript.Shell").Exec( _
- "cscript -nologo -e:jscript ""C:\li lei\a.js"" """ & _
- Path & chr(34) ).stdOut.ReadAll
复制代码
既然你是新手,就说明一下:
1、vbs中的一个引号"本身用一对引号""表示。(类似地,批处理中%%,JS中\\)
2、“_”为续行符。(类似地,CMD/BAT中为^,JS中为\)
3、JScript为JavaScript的微软版本,除了瘟到死,其他平台都不承认。
但在Windows上,MS对它作了优化,说它性能比JavaScrirpt优越(实际上几乎无法感觉到,两都语法也几乎完全相同)。运行本地js可以都用JScript引擎,但做网页千万不要用language=JScript。
(BSMS。。。)
作者: ohar 时间: 2009-8-7 22:53
怎么那path没有传递到js呢,js的内容是一楼的代码吗,要不要改呀
作者: zqz0012005 时间: 2009-8-7 23:29
js的内容要保存为一个js文件。
把上面的代码加到你已有的vbs中。
其实有一种文件可以让你把vbs和js写在一个文件中,那就是wsf文件(Windows Script File,Windows脚本文件)。先去看手册学习。
作者: ohar 时间: 2009-8-7 23:58
还是一步一个脚印,先把这个问题搞清楚了再说。我试了代码,那path真的没给js,返回一个空值。谢推荐学习
作者: zqz0012005 时间: 2009-8-8 00:08
你在js中用了WScript.Arguments吗???
作者: ohar 时间: 2009-8-8 00:41
不是一楼的代码吗?另外,你们白天都不在线啊,做这个是兼职吗
作者: ohar 时间: 2009-8-8 00:50
照葫芦画瓢写了一个wsf,返回Math.min(-123,1251,201),应该返回的是 -123
作者: zqz0012005 时间: 2009-8-8 02:03
当把两种不同类型的脚本放在同一文件时,就不需要WScript.Arguments了(命令行参数),使用函数传递参数即可。- <package>
- <job id="job1">
-
- <script language="JScript">
- function getMin(sPath) {
- var fso, nums, s;
- fso = new ActiveXObject('Scripting.FileSystemObject');
- nums = fso.OpenTextfile(sPath).ReadAll().match(/\ba[-.\d]+\b/gi);
- s = "Math.min(" + nums.join(',').replace(/a/gi,'') + ")";
- return eval(s);
- }
- </script>
-
- <script language="VBScript">
- Path = "C:\Documents and Settings\user\桌面\a.txt"
- WScript.Echo getMin(Path)
- </script>
-
- </job>
- </package>
复制代码
作者: Batcher 时间: 2009-8-8 11:52
为了方便初学者,楼主能否在顶楼介绍一个你那个代码的来龙去脉、有何用途等信息?
作者: ohar 时间: 2009-8-8 18:07
想不到把vbs和js的代码全部复制到wsf就可以了,都不用改什么,好!不过我用vbs调用js还是没解决.vbs的代码是- result = CreateObject("WScript.Shell").Exec("cscript -nologo -e:jscript ""C:\a.js"" """ & Path & chr(34) ).stdOut.ReadAll下一行是wscript.echo result
复制代码
js的代码是一楼的
作者: zqz0012005 时间: 2009-8-8 18:56
7楼不是说过吗?WScript.Arguments
js中 f = path; 改成
f = WScript.Arguments(0);
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |