Board logo

标题: [分享]批处理利用mshta调用vbs并返回值 [打印本页]

作者: batman    时间: 2011-5-22 11:18     标题: [分享]批处理利用mshta调用vbs并返回值

其实批处理利用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
复制代码

作者: CrLf    时间: 2011-5-22 13:12

借花献佛:
  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))&"个字符")
复制代码

作者: 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