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

[分享]批处理利用mshta调用vbs并返回值

[复制链接]
发表于 2011-5-22 11:18:55 | 显示全部楼层 |阅读模式
其实批处理利用mshta调用vbs的方法大家都知道,但多用于隐藏运行批处理。同时如果我们要调用vbs进行计算,并返回计算结果给批处理时,一般要用到临时文件,而且还要创建文本操作对象写文本,使得mshta中的代码多了一长串,一不注意就会出错。。。

   实际上我们可以在隐藏运行批处理的方法中得到启示,利用这个传回的参数来传递计算结果,示例代码如下:

  1. @echo off
  2. ::调用vbs计算字符串长度
  3. set "str=abcdefa"
  4. if "%1" neq "" goto next
  5. mshta vbscript:createobject("wscript.shell").run("%~fs0 "^&len("%str%"),1,0)(window.close)
  6. goto :eof
  7. :next
  8. echo str字符串的长度为%1
  9. pause>nul
复制代码

评分

参与人数 1技术 +1 收起 理由
wc726842270 + 1 原来早就写出来了

查看全部评分

发表于 2011-5-22 13:12:55 | 显示全部楼层
借花献佛:
  1. :On Error Resume Next
  2. Sub bat
  3. echo off & cls
  4. ' 2>nul 3>nul & set /p input=请输入任意字符串
  5. echo HaHa
  6. ' &cmd /v:on /c cscript //nologo /e:vbs "%~f0" "!input!"&pause
  7. Exit Sub
  8. End Sub
  9. wscript.echo (len(WScript.Arguments(0))&"个字符")
复制代码

评分

参与人数 1技术 +1 收起 理由
wc726842270 + 1 不错

查看全部评分

发表于 2011-9-29 21:35:41 | 显示全部楼层
本帖最后由 FOR 于 2011-9-29 21:47 编辑

请问如果 str 为算式该如何呢?  比如:  set str=1.23+5.8*8.2
网上找了个
MsHta VBscript:CreateObject("Wscript.Shell").Run("%~fs0 "^&eval("%str%"),1,0)(Window.Close)&&exit
发表于 2011-9-30 09:14:06 | 显示全部楼层
本帖最后由 wc726842270 于 2011-9-30 09:24 编辑

BATMAN版主的方法,正是想学的,
ZM版主的方法,则是利用了VBS和P批理的容错能力,另外还有注释
发表于 2011-9-30 11:59:58 | 显示全部楼层
发现这种方法有 cls 的效果,有办法解决吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 02:03 , Processed in 0.017073 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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