中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 发布俺自己写的 cmd自动更新模块 800字节
作者:
标题: 发布俺自己写的 cmd自动更新模块 800字节 上一主题 | 下一主题
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『楼 主』:  发布俺自己写的 cmd自动更新模块 800字节

俺偶尔写个CMD脚本,发给别人后又有了更新,每次都追着别人更新脚本确实很烦!
但有时新版本的脚本有必要的新功能,或是旧版有BUG,没有更新那更烦!
于是乎,俺写了一个CMD脚本的自更新模块,插入到原来代码里,从此告别追人更新的烦恼!
==============================================
说明:新版脚本和脚本列表以txt格式存放于服务器,客户脚本执行时先下载脚本列表从中对照版本后根据脚本列表下载更新文件替换旧文件并执行新文件!
更新模块变量统一使用soyd开头,标签统一使用down开头,注意不要冲突!
更新模块代码控制在30行以下,代码量控制在800字节,示例脚本也不足1KB,不会给脚本增加太多负担!
脚本列表当前3个必要行:
jy=930
wj=down.txt
mz=down
注意:列表每部分必须以mz=**结尾
自动更新模块3个必要定义变量
soydb定义当前文件版本,用于与jy(soydjy)对比是否需要更新
soydw定义脚本更新服务器目录
soydm定义需要被更新的目标脚本名(可以是脚本本身的名字,也可用示例脚本更新其它脚本)

自动更新模块使用方法:可以嵌入其它代码,也可以作为单独文件用于更新其它脚本!

如有任何意见建议问题等,欢迎一起探讨QQ:354324773
==============================================
脚本列表示例文件(downLB.txt)
# SYBN CMD 脚本更新列表
# 本列表提供用于对照更新SYBN的脚本信息.
# 列表创建时间: 2009年9月28日 15:51
# 列表更新时间: 2009年9月30日 19:56
# 列表更新内容: 创建列表
# 列表网络地址: http://down.lpfcn.cn/cmddown/downLB.txt
# 服务器所在地: (国外)www.prohosting.com
# --------------------------------------------------
#更新脚本
bh=0
rq=2009-9-28
sj=19:56
dx=9377
jy=930
wj=down.txt
yt=更新脚本
mz=down
# --------------------------------------------------
#测试脚本
bh=1
rq=2009-9-28
sj=16:00
dx=0
jy=928
wj=cs.txt
yt=测试脚本
mz=cs
# --------------------------------------------------
==============================================
更新模块示例脚本(down.cmd)
@echo off
color F2
set soydb=1
set soydw=http://down.lpfcn.cn/cmddown/
set soydm=down
set soydp=Y
set /p soydp=是否更新?[Y/N]:
if "%soydp%" == "N" goto :EOF
if "%soydp%" == "n" goto :EOF

call :downlb
pause
goto :EOF

:downlb
::校验
if exist downLB.txt del downLB.txt
call :downvb %soydw%downLB.txt downLB.txt
if exist downLB.txt for /f "eol=# tokens=1" %%a in (downLB.txt) do set soyd%%a &&if "%%a" == "mz=%soydm%" goto :downgx
goto :EOF
:downvb
::下载
echo on error resume next:Set P=CreateObject("Microsoft.XMLHTTP"):P.Open "GET","%1",0:P.Send() >TMP.vbs
echo Set G=CreateObject("ADODB.Stream"):G.Mode=3:G.Type=1:G.Open():G.Write(P.responseBody):G.SaveToFile "%2",2 >>TMP.vbs
call TMP.vbs &&del TMP.vbs
goto :EOF
:downgx
::更新
if %soydjy% gtr %soydb% call :downvb %soydw%%soydwj% %soydwj%
if exist %soydm%.cmd echo 更新成功!&&cmd /D /C del %soydm%.cmd ^&^&ren %soydwj% %soydm%.cmd ^&^&%soydm%
goto :EOF

2009-9-30 20:11
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 2 楼』:  

哦~  我经常备份脚本到u盘,以前不懂,用覆盖式的复制
后来才发现xcopy可以实现更新式的复制,如果有新的,就更新,没有的
就写入。

xcopy的/d参数



综合型编程论坛

我的作品索引
  
2009-9-30 20:19
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『第 3 楼』:  

有好多命令简单实用xcopy就是其中之一,
另外用copy /b a.ipg+b.rar c.jpg 命令隐藏rar文件还可以逃过免费空间的文件类型限制!

2009-9-30 20:27
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『第 4 楼』:  

正在计划加入多文件更新支持!
现有版本只能更新单个文件,争取加入多文件更新,一次性更新多个文件,用以多文件脚本的更新支持!
然后再修改校验部分,加入文件大小校验,完成后俺再发上来!

[ Last edited by sl543001 on 2009-10-1 at 16:40 ]

2009-10-1 11:46
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复

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


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



论坛跳转: