呵呵,今天又来发个无聊的帖子,主要是让大家了解到如果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 编辑 ] |