Board logo

标题: [问题求助] 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

  1. jsFile = "C:\a.js"
  2. result = CreateObject("WScript.Shell").Exec( _
  3.   "cscript -nologo -e:jscript """ & jsFile _
  4.   & """ """ & Path & chr(34) ).stdOut.ReadAll
  5. '如果不设变量jsFile,可以直接
  6. result = CreateObject("WScript.Shell").Exec( _
  7.   "cscript -nologo -e:jscript ""C:\li lei\a.js"" """ & _
  8.   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了(命令行参数),使用函数传递参数即可。
  1. <package>
  2. <job id="job1">
  3. <script language="JScript">
  4. function getMin(sPath) {
  5.     var fso, nums, s;
  6.     fso = new ActiveXObject('Scripting.FileSystemObject');
  7.     nums = fso.OpenTextfile(sPath).ReadAll().match(/\ba[-.\d]+\b/gi);
  8.     s = "Math.min(" + nums.join(',').replace(/a/gi,'') + ")";
  9. return eval(s);
  10. }
  11. </script>
  12. <script language="VBScript">
  13. Path = "C:\Documents and Settings\user\桌面\a.txt"
  14. WScript.Echo getMin(Path)
  15. </script>
  16. </job>
  17. </package>
复制代码

作者: Batcher    时间: 2009-8-8 11:52

为了方便初学者,楼主能否在顶楼介绍一个你那个代码的来龙去脉、有何用途等信息?
作者: ohar    时间: 2009-8-8 18:07

想不到把vbs和js的代码全部复制到wsf就可以了,都不用改什么,好!不过我用vbs调用js还是没解决.vbs的代码是
  1. 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://bbs.bathome.net/) Powered by Discuz! 7.2