中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 21:46
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 在另外一个程序中将脚本以变量传给cscript执行?
可打印版本  898 / 4
第1楼 youtube2046 发表于 2009-12-19 11:46
新手上路 发帖 9 积分 15 来自 Beijing
在另外一个程序中将脚本以变量传给cscript执行?
我们通过Cscript执行vbs时一般要用如下格式:



如果这个执行是从另外一个程序中调用的, 那么就必须把内容先写到test.vbs中。然后再执行上述代码。这样就引出一个问题:如果不希望别人看到test.vbs中的内容,那该怎么办?

假设写入test.vbs中的内容为Content. 可不可以在调用程序中以下面这种方式调用呢?




或者类似的方法。这样就可以保守Content中的密码了:-)

我试了不行啊。希望大家能帮我想想办法。;)
第2楼 qinchun36 发表于 2009-12-19 14:09
高级用户 发帖 400 积分 609
cscript和wscript都只能执行一个文件,要执行一段脚本可以用mshta
第3楼 youtube2046 发表于 2009-12-20 10:37
新手上路 发帖 9 积分 15 来自 Beijing
我记得mshta是执行hta格式文件的啊。既然它可以完成我说的功能,可否给出实际的实现方法。或举个例子啊?
第4楼 yishanju 发表于 2009-12-21 07:59
银牌会员 发帖 1,357 积分 1,488
哎,自己搜索啊,真有这么难啊?
第5楼 qinchun36 发表于 2009-12-21 11:24
高级用户 发帖 400 积分 609
可以用如下的格式调用一句VBS脚本:

mshta vbscript:ONE_VBS_METHOD

因为 mshta 是执行 .hta 文件的,而 HTA 文件的本质就是 html 文档,因此能调用 html 文件中能够使用的脚本,但有些东西是被限制的,下面是一个在命令行窗口中执行的例子。

比如下面的一个脚本:


由于命令行只能是一行,所以需要把它搞成一行的格式,冒号在VBS中做分行功能:


又因为 mshta 被作为一个命令执行,我们的脚本只是作为参数,并且 ONE_VBS_METHOD 就直接是运行的脚本,不能用引号,但是 mshta 又只接受冒号后面的第一个参数,即 ONE_VBS_METHOD 必须是一个没有分隔的语句,为了解决这个问题用 execute 或者 eval 包装一下,注意变成字符串后一个引号要换成两个:


上面的都是合法的VBScript脚本,可以保存为 .vbs 文件直接运行的。

于是得到下面一行命令,在CMD命令行界面执行:


但是运行之后发现残留一个 HTA 的窗口不自动关闭,因此一般再加上一个HTML中关闭窗口的代码,变成:



多余的话:
第一句,这个其实是运行在HTML中的脚本形式,因此还可以使用其他一些浏览器中的方法,实现脚本本身不具备的功能


第二句,关于VBScript中的引号是个很纠结的问题,如果用JScript或者JavaScript就没这么麻烦了,因为 ' 和 " 效果相同,避免了转换时搞引号的问题,但是少了WScript、MsgBox等方便的东西


(不建议新手或者对大小写不敏感者使用JScript或者JavaScript!)
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023