返回列表 发帖

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则需要多创建一个对象才能将文本保存。
@echo off
call :getProprty 屏幕宽 kuan
call :getProprty 屏幕高 gao
call :getProprty 剪贴板 jtb
call :getProprty 剪贴板 > Brother.txt
echo 你的分辨率是 %kuan%×%gao% 像素
echo.
echo 剪贴板的最后一行:
echo %jtb%
echo.
echo 剪贴板中所有文字(Brother.txt):
more Brother.txt
pause>nul
exit
:: 第一个参数是要获取什么内容;
:: 第二个参数是把它放入的变量名,没有则直接显示
:getProprty
set "_~_=%temp%\Spring"
set "_$_=WScript.Echo .parentWindow."
> "%_~_%" echo v = WScript.Arguments(0)
>>"%_~_%" echo With CreateObject^("htmlfile"^)
>>"%_~_%" echo If v = "剪贴板" Then %_$_%clipboardData.GetData^("text"^)
>>"%_~_%" echo If v = "屏幕宽" Then %_$_%screen.Width
>>"%_~_%" echo If v = "屏幕高" Then %_$_%screen.Height
>>"%_~_%" echo End With
for /f "delims=" %%z in ('cscript -nologo -e:vbs "%_~_%" "%1"') do (
  if /i "%2"=="" (
    echo %%z
  ) else (
    set "%2=%%z"
  )
)
del "%_~_%" /qCOPY

[ 本帖最后由 Spring 于 2010-2-16 22:36 编辑 ]
1

评分人数

    • batman: 好!学习了。PB + 20 技术 + 1

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

TOP

返回列表