标题: [分享]批处理利用mshta调用vbs并返回值 [打印本页]
作者: batman 时间: 2011-5-22 11:18 标题: [分享]批处理利用mshta调用vbs并返回值
其实批处理利用mshta调用vbs的方法大家都知道,但多用于隐藏运行批处理。同时如果我们要调用vbs进行计算,并返回计算结果给批处理时,一般要用到临时文件,而且还要创建文本操作对象写文本,使得mshta中的代码多了一长串,一不注意就会出错。。。
实际上我们可以在隐藏运行批处理的方法中得到启示,利用这个传回的参数来传递计算结果,示例代码如下:- @echo off
- ::调用vbs计算字符串长度
- set "str=abcdefa"
- if "%1" neq "" goto next
- mshta vbscript:createobject("wscript.shell").run("%~fs0 "^&len("%str%"),1,0)(window.close)
- goto :eof
- :next
- echo str字符串的长度为%1
- pause>nul
复制代码
作者: CrLf 时间: 2011-5-22 13:12
借花献佛:- :On Error Resume Next
- Sub bat
- echo off & cls
- ' 2>nul 3>nul & set /p input=请输入任意字符串
- echo HaHa
- ' &cmd /v:on /c cscript //nologo /e:vbs "%~f0" "!input!"&pause
- Exit Sub
- End Sub
- wscript.echo (len(WScript.Arguments(0))&"个字符")
复制代码
作者: FOR 时间: 2011-9-29 21:35
本帖最后由 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
作者: wc726842270 时间: 2011-9-30 09:14
本帖最后由 wc726842270 于 2011-9-30 09:24 编辑
BATMAN版主的方法,正是想学的,
ZM版主的方法,则是利用了VBS和P批理的容错能力,另外还有注释
作者: FOR 时间: 2011-9-30 11:59
发现这种方法有 cls 的效果,有办法解决吗?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |