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

[其他] VBS拓充批处理

注:本文受523066680的启发所写

以前曾经发布过一个帖子,里面谈到了利用Cscript运行vbs,在vbs中利用Wscript.Echo返回信息,批处理用for读取,来实现vbs与批处理交互

这个是一个类似的例子,这里使用了bat与vbs混编的技巧,使得只需要一个文件就可以实现vbs与bat交互
  1. '>nul 2>nul&echo off&cls 2>nul 3>nul
  2. :'loop
  3. '&set /p a=请输入算式:
  4. '&Call :'Call "ans" "Calc" "%a%"
  5. '&echo %ans%
  6. '&Call :'Call "null" "Speak" "%ans%" "6" "100"
  7. '&pause
  8. '&goto 'loop
  9. :'Call
  10. '&setlocal enableextensions
  11. '&for %%t in (%*) do if defined bool (call set arg=%%arg%% %%%%t) else (set bool=0&set v=%%~t)
  12. '&for /f "delims=" %%t in ('cscript /e:vbs /nologo "%~f0"%arg%') do set ret=%%t
  13. '&endlocal&set %v%=%ret%
  14. '&goto :eof
  15. Set Arg=WScript.Arguments
  16. Set Ws=CreateObject("WScript.Shell")
  17. Select Case LCase(Arg(0))
  18. Case "calc"
  19. WScript.Echo Eval(Arg(1))
  20. Case "speak"
  21. Set Sapi=CreateObject("sapi.spvoice")
  22. Sapi.Rate=Arg(2)
  23. Sapi.Volume=Arg(3)
  24. Sapi.Speak Arg(1)
  25. End Select
复制代码
其中大致结构如下(文件结构从上到下):

头部内容,Echo Off以及关闭错误流输出。原始方案是不关闭错误流,但是批处理较长时不方便
  1. '>nul 2>nul&echo off&cls 2>nul 3>nul
复制代码
批处理代码,每行前要加'&,混编需要
  1. '&echo 批处理代码
复制代码
调用代码,调用:'Call标签并实现相应功能
  1. '&Call :'Call "返回变量" "函数" "参数一"……
复制代码
:'Call标签主体,其结构并不完美,对特殊字符等仍需改进
  1. :'Call
  2. '&setlocal enableextensions
  3. '&for %%t in (%*) do if defined bool (call set arg=%%arg%% %%%%t) else (set bool=0&set v=%%~t)
  4. '&for /f "delims=" %%t in ('cscript /e:vbs /nologo "%~f0"%arg%') do set ret=%%t
  5. '&endlocal&set %v%=%ret%
  6. '&goto :eof
复制代码
vbs代码,用于拓充功能,建议采用以下格式
  1. Set Arg=WScript.Arguments
  2. Select Case LCase(Arg(0))
  3. Case "函数一"……
  4. WScript.Echo 返回值Case "函数二"……
  5. WScript.Echo 返回值……
  6. End Select
复制代码
利用vbs能有效地提升批处理的功能,但目前还有许多缺陷

最主要是混编结构并不方便,对于大工作量批处理比较累赘
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

2L的方法还是避免不了每行都得加上的悲剧
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

js也行,批量效率肯定要高,而且修改也不大。。。
但是貌似js没有vbs那么常用。。。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

返回列表