|
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 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
『第
2 楼』:
哦~ 我经常备份脚本到u盘,以前不懂,用覆盖式的复制
后来才发现xcopy可以实现更新式的复制,如果有新的,就更新,没有的
就写入。
xcopy的/d参数
|
综合型编程论坛
我的作品索引 |
|
2009-9-30 20:19 |
|
|
sl543001
中级用户
积分 499
发帖 225
注册 2008-12-30
状态 离线
|
『第
3 楼』:
有好多命令简单实用xcopy就是其中之一,
另外用copy /b a.ipg+b.rar c.jpg 命令隐藏rar文件还可以逃过免费空间的文件类型限制!
|
|
2009-9-30 20:27 |
|
|
sl543001
中级用户
积分 499
发帖 225
注册 2008-12-30
状态 离线
|
『第
4 楼』:
正在计划加入多文件更新支持!
现有版本只能更新单个文件,争取加入多文件更新,一次性更新多个文件,用以多文件脚本的更新支持!
然后再修改校验部分,加入文件大小校验,完成后俺再发上来!
[ Last edited by sl543001 on 2009-10-1 at 16:40 ]
|
|
2009-10-1 11:46 |
|
|