中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]实用功能Windows脚本文件
作者:
标题: [原创]实用功能Windows脚本文件 上一主题 | 下一主题
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『楼 主』:  [原创]实用功能Windows脚本文件

我不喜欢第三方命令行程序,总感觉EXE文件是非常敏感的东西,不能随身携带,对于非底层的应用问题,比如文件查找、文字提取等,也基本没用过。
自己学了很久脚本的知识,感觉很多功能都不需要第三方工具,直接用脚本甚至更强大,可以系统自带的 cscript.exe 可以在控制台环境下很友好地运行,于是我就想做一个平时比较常用的通用功能脚本,作为一个可以随时修改、扩展的“第三方命令行程序”以供使用,现在刚刚开始这项工程。

成品采用的是 WINDOWS脚本文件(.wsf)格式,用这个格式有很多好处:
1. 这也是最主要的一个,可以同时兼容VBS和JS,能更灵活的完成任务(比如正则表达式用JS操作就方便很多,目前主要采用VBS);
2. 不用再自己写帮助信息,系统提供解析;
3. 使用了命名参数集,可以随意交换参数顺序而不影响正确执行,这使得它更像命令行程序(就像 dir /s /b 和 dir /b /s 效果一样);
4. 每个功能作为一个JOB,因此一个文件可以集成很多功能,避免文件的零散;
5. XML格式看起来很明了。


现在刚刚完成了两个功能,大家如果有什么需求可以给点建议,以便完善它,个人觉得它还是很有用的。
默认是用 wscript.exe 运行的,但这个工具是为控制台设计的,有些时候可能只能用 cscript.exe 运行,需要注意一下。
调用方法,一般用 cscript 加上 -nologo 参数,比如默认的
cscript -nologo CommUtil.wsf /?
功能一:
将一个协议地址指定的资源保存为本地文件。

通俗的说就是下载一个文件,但不仅仅如此。
可以通过指定一个工作名称不带参数来参看它的说明和用法示例
cscript -nologo CommUtil.wsf //job:ProtocolSave
比如最普通的功能,下载一个MP3:
cscript.exe -nologo CommUtil.wsf //job:ProtocolSave /url:"http://clubauberge.fre
e.fr/nouvelan2007/Cascade.mp3" /loc:"Everytime We Touch.mp3"
这个功能有个 /txt 参数,要说明一下,提供它主要是看有很多地方大家要将一个网页内容作为文本来分析,但是通过工具下载来之后它是原来的 UTF-8 编码,导致CMD无法识别,于是这个参数可以弄成可以处理的文本。
它不仅可以下载 http:// 的东西,而且可以是其它,比如系统的  res:// 协议,由此我们可以实现提取 EXE、DLL、SYS 等文件内的资源,请看此批处理:
提取 shell32.dll 内编号在 100 到 400 之间的 BMP 图片
@echo off
set "SaveDir=D:\pictemp"
if not exist "%SaveDir%" md "%SaveDir%"
echo ======== 开始提取 ============
for /l %%i in (100,1,400) do (
  cscript -nologo CommUtil.wsf //job:ProtocolSave /url:"res://C:\WINDOWS\system32\shell32.dll/2/%%i" /loc:"%SaveDir%\%%i.bmp" /o
)
echo ======== 提取结束 ============
echo 请查看文件夹 "%SaveDir%" 内容
pause>nul
start explorer "%SaveDir%"
关于 res 协议可以网上查资料,附件里面有个是此功能的VBS版做的提取 BMP 和 ICO 文件的脚本,有兴趣可以看看。


功能二:
获取一个文件的相关属性信息。

说明和用法示例
cscript -nologo CommUtil.wsf //job:FileInfo
这个功能的用法很简单,看看就会了,这里的属性信息都是我们鼠标右键属性,弹出那个对话框里面的,包括“摘要”选项卡里的,但可能不完全,适用于所有可以右键属性的文件。
来看一个批处理示例,查找我的放音乐的文件夹(C:\Documents and Settings\issuser\桌面\music)里面,所有 曹方  唱的歌:
@echo off
set "MusicDir=C:\Documents and Settings\issuser\桌面\music\"
echo =========== 开始寻找 =============
for /f "delims=" %%a in ('dir "%MusicDir%" /a-d /b /s') do (
  cscript -nologo CommUtil.wsf //job:FileInfo /file:"%%a" /header:"艺术家"|find "曹方">nul && echo "%%a"
)
echo =========== 寻找结束 =============
pause>nul
附件里有此功能的单体版 FileInfo.vbs

   此帖被 +15 点积分         点击查看详情   
评分人:【 plp626 分数: +15  时间:2010-7-7 19:02


附件 1: CommUtil.zip (2010-7-7 17:44, 2.87 K,下载次数: 12)
附件 2: 附件.zip (2010-7-7 17:44, 2.92 K,下载次数: 10)
附件 3: CommUtil_20101111.zip (2010-11-12 15:10, 19.41 K,下载次数: 2)
2010-7-7 17:44
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 2 楼』:  

好东西,可用不到,就不下载了,我也喜欢不用外部工具实现脚本所能做的事情,不过,由于电脑硬盘的突然崩溃,使我的很多脚本也消失了。。。已经失去了写脚本的心,只能纯支持兄弟下了!~顶起!~



逍遥@浪子@反病毒
2010-7-7 21:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 3 楼』:  

回 2 楼,你这个心情我很理解。我以前也遇到过,不过是因为东西在别人电脑上,有一天我不在的时候电脑被彻底地格了,什么都没了,还有次是东西都放在U盘里,结果U盘坏了。。。后来才有备份的习惯

2010-7-9 10:37
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: