找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24658|回复: 12

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

[复制链接]
发表于 2009-8-6 10:05:06 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-4 13:39 编辑

该怎样用vbs传递一个path变量给js,再调用他,再返回一个结果变量给vbs。下面是一个精典的js
此代码原帖http://bbs.bathome.net/thread-5441-1-1.html
 楼主| 发表于 2009-8-7 11:24:33 | 显示全部楼层
听说ARGUMENTS能解决,但我搜了论坛的帖子,没有啊。资料里介绍的也没有这样在不同脚本间传递变量的例子啊
发表于 2009-8-7 20:25:26 | 显示全部楼层
  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。。。)

评分

参与人数 1PB +3 收起 理由
ohar + 3 哎,一次不能加15分

查看全部评分

 楼主| 发表于 2009-8-7 22:53:23 | 显示全部楼层
怎么那path没有传递到js呢,js的内容是一楼的代码吗,要不要改呀
发表于 2009-8-7 23:29:12 | 显示全部楼层
js的内容要保存为一个js文件。
把上面的代码加到你已有的vbs中。

其实有一种文件可以让你把vbs和js写在一个文件中,那就是wsf文件(Windows Script File,Windows脚本文件)。先去看手册学习。
 楼主| 发表于 2009-8-7 23:58:39 | 显示全部楼层
还是一步一个脚印,先把这个问题搞清楚了再说。我试了代码,那path真的没给js,返回一个空值。谢推荐学习
发表于 2009-8-8 00:08:12 | 显示全部楼层
你在js中用了WScript.Arguments吗???
 楼主| 发表于 2009-8-8 00:41:51 | 显示全部楼层
不是一楼的代码吗?另外,你们白天都不在线啊,做这个是兼职吗
 楼主| 发表于 2009-8-8 00:50:09 | 显示全部楼层
照葫芦画瓢写了一个wsf,返回Math.min(-123,1251,201),应该返回的是 -123
发表于 2009-8-8 02:03:15 | 显示全部楼层
当把两种不同类型的脚本放在同一文件时,就不需要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>
复制代码

评分

参与人数 1PB +3 收起 理由
ohar + 3 教学仔细,有耐心,为人师,就应是这样!

查看全部评分

发表于 2009-8-8 11:52:54 | 显示全部楼层
为了方便初学者,楼主能否在顶楼介绍一个你那个代码的来龙去脉、有何用途等信息?
 楼主| 发表于 2009-8-8 18:07:48 | 显示全部楼层
想不到把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的代码是一楼的
发表于 2009-8-8 18:56:44 | 显示全部楼层
7楼不是说过吗?WScript.Arguments

js中 f = path; 改成
f = WScript.Arguments(0);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:03 , Processed in 0.020445 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表