[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[分享]批处理利用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
复制代码
1

评分人数

***共同提高***

发现这种方法有 cls 的效果,有办法解决吗?

TOP

本帖最后由 wc726842270 于 2011-9-30 09:24 编辑

BATMAN版主的方法,正是想学的,
ZM版主的方法,则是利用了VBS和P批理的容错能力,另外还有注释
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 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

TOP

借花献佛:
  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

评分人数

TOP

返回列表