呵呵,今天又来发个无聊的帖子,主要是让大家了解到如果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 "%_~_%" /q
复制代码
[ 本帖最后由 Spring 于 2010-2-16 22:36 编辑 ] |