Board logo

标题: BAT结合VBS获取屏幕大小以及剪贴板内容 [打印本页]

作者: Spring    时间: 2010-2-10 17:42     标题: BAT结合VBS获取屏幕大小以及剪贴板内容

呵呵,今天又来发个无聊的帖子,主要是让大家了解到如果BAT和VBS都会的话,是非常好的事情。
这个代码的主体是批处理,功能都是VBS完成的,而结果又返回批处理中可供使用,这些都使得我们写代码有很高的灵活性。
目的:
1. VBS文件可以使用任意扩展名或者不要扩展名都可以运行,方法是 wscript -e:vbs FILENAME ,也可以用 cscript ,但它默认输出微软的版权信息,可以用 -nologo 把这些信息屏蔽掉。
2. 在批处理中经常要用到某个程序或者代码的输出信息,而且是一次性的,用 > 或者 >> 输出到临时文件,再读取,再删除比较麻烦,现在你会用 for 的话就可以避免临时文件了,而且能增加秘密性。
就是说  命令>文件&for /f %%a in (文件) do (...)  & del 文件  可以变成 for /f %%a in ('命令') do (...)  
3. 还有就是看看怎么向VBS传递参数,用cscrpt执行的时候 WScript.Echo 会把结果输出到命令行窗口,这样就能让BAT获取,达到两种程序的沟通效果。

这个代码中的特点是,干的这些功能都是BAT本身办不到的;而最后将结果保存为文件BAT又非常方便,只需一个 > 号,而VBS则需要多创建一个对象才能将文本保存。
  1. @echo off
  2. call :getProprty 屏幕宽 kuan
  3. call :getProprty 屏幕高 gao
  4. call :getProprty 剪贴板 jtb
  5. call :getProprty 剪贴板 > Brother.txt
  6. echo 你的分辨率是 %kuan%×%gao% 像素
  7. echo.
  8. echo 剪贴板的最后一行:
  9. echo %jtb%
  10. echo.
  11. echo 剪贴板中所有文字(Brother.txt):
  12. more Brother.txt
  13. pause>nul
  14. exit
  15. :: 第一个参数是要获取什么内容;
  16. :: 第二个参数是把它放入的变量名,没有则直接显示
  17. :getProprty
  18. set "_~_=%temp%\Spring"
  19. set "_$_=WScript.Echo .parentWindow."
  20. > "%_~_%" echo v = WScript.Arguments(0)
  21. >>"%_~_%" echo With CreateObject^("htmlfile"^)
  22. >>"%_~_%" echo If v = "剪贴板" Then %_$_%clipboardData.GetData^("text"^)
  23. >>"%_~_%" echo If v = "屏幕宽" Then %_$_%screen.Width
  24. >>"%_~_%" echo If v = "屏幕高" Then %_$_%screen.Height
  25. >>"%_~_%" echo End With
  26. for /f "delims=" %%z in ('cscript -nologo -e:vbs "%_~_%" "%1"') do (
  27.   if /i "%2"=="" (
  28.     echo %%z
  29.   ) else (
  30.     set "%2=%%z"
  31.   )
  32. )
  33. del "%_~_%" /q
复制代码

[ 本帖最后由 Spring 于 2010-2-16 22:36 编辑 ]
作者: leo.liu    时间: 2020-6-23 12:16

我想把宽设为变量kuan
高设为变量hao
我该怎么写




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2