[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] JS与VBS之间的变量传递

本帖最后由 pcl_test 于 2016-8-4 13:39 编辑

该怎样用vbs传递一个path变量给js,再调用他,再返回一个结果变量给vbs。下面是一个精典的js
此代码原帖http://bbs.bathome.net/thread-5441-1-1.html

听说ARGUMENTS能解决,但我搜了论坛的帖子,没有啊。资料里介绍的也没有这样在不同脚本间传递变量的例子啊

TOP

  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。。。)
1

评分人数

    • ohar: 哎,一次不能加15分PB + 3
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

怎么那path没有传递到js呢,js的内容是一楼的代码吗,要不要改呀

TOP

js的内容要保存为一个js文件。
把上面的代码加到你已有的vbs中。

其实有一种文件可以让你把vbs和js写在一个文件中,那就是wsf文件(Windows Script File,Windows脚本文件)。先去看手册学习。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

还是一步一个脚印,先把这个问题搞清楚了再说。我试了代码,那path真的没给js,返回一个空值。谢推荐学习

TOP

你在js中用了WScript.Arguments吗???
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

不是一楼的代码吗?另外,你们白天都不在线啊,做这个是兼职吗

TOP

照葫芦画瓢写了一个wsf,返回Math.min(-123,1251,201),应该返回的是 -123

TOP

当把两种不同类型的脚本放在同一文件时,就不需要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>
复制代码
1

评分人数

    • ohar: 教学仔细,有耐心,为人师,就应是这样!PB + 3
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

为了方便初学者,楼主能否在顶楼介绍一个你那个代码的来龙去脉、有何用途等信息?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

想不到把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的代码是一楼的

TOP

7楼不是说过吗?WScript.Arguments

js中 f = path; 改成
f = WScript.Arguments(0);
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表