中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理FTP更新病毒库 上一主题 | 下一主题
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『楼 主』:  批处理FTP更新病毒库

好久没有发东西了,也发个上来玩玩。

见3楼更新后的代码

[ Last edited by HUNRYBECKY on 2007-1-30 at 10:43 PM ]

   此帖被 +10 点积分       点击查看详情   
评分人:【 redtek 分数: +10  时间:2007-1-30 07:14


2007-1-27 01:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 2 楼』:  

见3楼更新后的代码

[ Last edited by HUNRYBECKY on 2007-1-30 at 10:44 PM ]

2007-1-27 03:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 3 楼』:  

再次更新,纠正几个小错误。

[小档案]
    由于破解的ND最近无法升级了,尽管在本地显示服务没有过期,可是只要一升级就说服务过期本人没有找到更好的解决办法,可是不能眼睁睁看着用了好几年的软件不能升级了吧;加之最近病毒泛滥成灾,本人决定写一个既可以在在公司内部架设FTP站点来更新公司ND杀毒软件又可以直接到其他FTP站点或是直接到官方网站更新病毒的程序.

[功能]
    1.可以根据用户自定义FTP站点来更新ND病毒库,使用方法是,先建立匿名用户登陆的FTP站点(这个就不用我)介绍了吧;其次在FTP站点上建立SHARE根目录,并把病毒更新档案直接放到改目录既可;最后直接FTPSITE.INI文件中增加自己的站点名,但是要记住不要输入FTP标头,如公司内部等内部FTP站点:192.168.100.10,如果你要把这个站点共享给他人,则可以使用站点的外部IP地址,如:RSWJ.VICP.NET.另外你也可以使用别人的FTP站点来更新ND病毒库,只是需要按照上述规则来建立FTP站点即可.在FTPSITE.INI文件中,我已经内置了两个FTP站点,其中XBDSOFT.VICP.NET是我的站点,提供常年ND病毒库更新档案;如果你需要增加更多的FTP更新站点,可以添加到改文件即可.
    2.本系统提供了多方位的选择,如果用户没有建立FTP站点或不能与这些FTP站点建立正常的连接或者用户在建立了FTP站点后还没有下载新的ND病毒库更新档案,那么用户也可以使用这个系统来直接连接到官方网站www.symantec.com去下载或更新病毒库档案.
    3.如果下载过程中出现错误,本系统会详细记录这些错误以供用户参考,在执行阶段系统会显示这些错误记录,同时用户也可以选择在执行完后在打开login.log文件来查看错误记录;另外如果下载过程没有遇到错误,系统将不记录这些错误.
    4.本系统自动识别繁简系统并进行自动转化,但是至于本文档,只提供简体语言.

[注意]
    下载后请直接执行UPDATE可执行文件即可,如果解压缩后有多个文件,请保证这些文件的完整性,即不要随意改变文件(夹)的名称,位置,属性和内容,否则该程序可能不能正常运行.

[版权]
     本程序可以自由复制,使用和发布,用户也可以在此基础上进行修改完善,但为了尊重原创作者的辛勤劳动成果,请说明或保留原创作者的信息;如果您编写出更加好的程序或有什么好的建议请与本人联系:QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com
@ECHO OFF
REM 设置基本环境变量
SET FTPSITEN=1
SET HTTPSITE="HTTP://securityresponse.symantec.com/avcenter/download/pages/US-N95.html"
SET HTTPDSITE="http://definitions.symantec.com/defs/"
SET TIMEOUT=3
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
CMDOW @ /DIS
FOR /F "TOKENS=1,2 DELIMS=: " %%I IN ('CHCP') DO SET LAN=%%J

REM 根据系统语言进行编码转化
IF "%JUT%"=="1" GOTO CHS
IF "%LAN%"=="936" GOTO :CHS
IF "%LAN%"=="437" GOTO :CHS
:CHT
SET JUT=1
START /WAIT CT.EXE /B /S "UPDATE.BAT" /D "UPDATECHT.BAT"
START /B/WAIT UPDATECHT.BAT
IF EXIST UPDATECHT.BAT DEL UPDATECHT.BAT
EXIT

:CHS
ECHO                  ND杀毒自动更新程序V1.0可以实现如下功能
ECHO      根据站点列表更新病毒库;记录操作记录和出错误记录;自动识别繁简系统
ECHO 提示:本程序可能不适合WIN9X机器;如果下载的包内有多个文件,请保持原文件名和路径
ECHO.
ECHO      ╔──────────────────────────────╗
ECHO      │                                                            │
ECHO      │                   ND杀毒更新系统V1.0                       │
ECHO      │              本程序由小布点(秋语)编写制作                  │
ECHO      │          欢迎使用小布点制作的绿色软件和其他程序            │
ECHO      │     本程序可以自由复制,使用和发布,版权归作者本人所有       │
ECHO      │  QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com  │
ECHO      │                                                            │
ECHO      ╚──────────────────────────2007─㊣╝
ECHO.
ECHO 正在进行更新准备工作,请稍候.........
TITLE 正在进行更新准备工作,请稍候.........
PING 127.0.0.1 -n %TIMEOUT% >NUL
>ftplst.ini  ECHO user anonymous
>>ftplst.ini ECHO.
>>ftplst.ini ECHO cd SHARE
>>ftplst.ini ECHO ls *-i32.exe downlst.txt
>>ftplst.ini ECHO quit
if exist login.log del /q/f login.log

REM 1.首先使用匿名登陆FTP获取最新病毒库的下载文件列表;如果失败则记录到login.log中并转到HTTP下载
ECHO 正在获取病毒库最新档案文件,请等待.......
TITLE 正在获取病毒库最新档案文件,请等待.......
:FTPLOOP
if exist downlst.txt del /q/f downlst.txt >NUL
FOR /F "eol=;skip=%FTPSITEN%" %%A IN (FTPSITE.INI) DO (
   ECHO ==================以下是登陆站点:%%A的错误信息================== >>login.log
   FTP -n -s:ftplst.ini %%A >>login.log
   FOR /F %%I IN (downlst.txt) DO SET downlst=%%I
   setlocal enabledelayedexpansion
   IF NOT DEFINED downlst (SET /A FTPSITEN+=1 && GOTO :FTPLOOP)
   IF EXIST !downlst! GOTO FEXIST
   CLS
   ECHO 正在下载最新档案文件:%downlst%,请等待.......
   TITLE 正在下载最新档案文件:%downlst%,请等待.......
   if exist login.log del /q/f login.log >NUL
   >ftpsetup.ini  ECHO user anonymous
   >>ftpsetup.ini ECHO.
   >>ftpsetup.ini ECHO get SHARE\!downlst!
   >>ftpsetup.ini ECHO quit
   ftp -n -s:ftpsetup.ini %%A >NUL
   if exist downlst.txt del /q/f downlst.txt >NUL
   if exist ftplst.ini del /q/f ftplst.ini >NUL
   if exist ftpsetup.ini del /q/f ftpsetup.ini >NUL
   endlocal
   GOTO :INSTALL
)
WGET %HTTPSITE% -q -O HTTPSITE.HTML >NUL
H2TXT /IP HTTPSITE.HTML|FIND /I "-I32.EXE" >downlst.txt & CLS
FOR /F %%I IN (downlst.txt) DO SET downlst=%%I
IF NOT DEFINED downlst GOTO :DOWNERR
if exist login.log del /q/f login.log >NUL
IF EXIST %downlst% GOTO FEXIST
ECHO 正在下载最新档案文件:%downlst%,请等待.......
TITLE 正在下载最新档案文件:%downlst%,请等待.......
WGET %HTTPDSITE%%downlst% -q
GOTO :INSTALL

REM 2.安装病毒定义库文件.
:INSTALL
CLS
ECHO 下面将安装最新的病毒库档案:%downlst%,请等待......
TITLE 下面将安装最新的病毒库档案:%downlst%,请等待......
start /b/wait "" "%downlst%"
GOTO :END

:FEXIST
CLS
if exist login.log del /q/f login.log >NUL
ECHO 最近没有更新档案,按任意键退出程序.......
PAUSE >NUL
GOTO :END

:DOWNERR
ECHO ==================以下是登陆站点:symantec.com的错误信息==================>>login.log
ECHO 无法登陆symantec.com站点或无法获取最新病毒定义档案>>login.log
ECHO =========================================================================>>login.log
ECHO.>>login.log
ECHO 下载出错,请仔细检查下面错误记录内容,如有不清楚的地方可以咨询我.QQ:9399100 >>login.log
TITLE 下载出错,请仔细检查错误记录内容
TYPE login.log
ECHO 按任意键退出程序.......
PAUSE >NUL
GOTO :END

:END
if EXIST downlst.txt DEL /Q/F downlst.txt >NUL
if EXIST ftplst.ini DEL /Q/F ftplst.ini >NUL
if EXIST ftpsetup.ini DEL /Q/F ftpsetup.ini >NUL
IF EXIST HTTPSITE.TXT DEL /Q/F HTTPSITE.HTML
IF EXIST HTTPSITE.HTML DEL /Q/F HTTPSITE.HTML
EXIT
为了可以正常运行测试,请下载下面的压缩包文件:
http://zhenlove.com.cn/cndos/fileup/files/ndupdate.rar

[ Last edited by HUNRYBECKY on 2007-1-30 at 10:41 PM ]

2007-1-30 06:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 4 楼』:  

还是挺使用滴,嘎嘎




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-1-30 06:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fjcmg888
新手上路





积分 10
发帖 4
注册 2006-12-5
状态 离线
『第 5 楼』:  

实用,谢谢

2007-1-30 08:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
czwlay
初级用户





积分 94
发帖 35
注册 2007-1-9
状态 离线
『第 6 楼』:  

高手,我的偶像!!

2007-1-30 08:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 7 楼』:  

还是只用了ftp登陆ftp了

2007-1-31 06:21
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by vkill at 2007-1-31 06:21:
还是只用了ftp登陆ftp了

优先使用FTP登陆下载,如果FTP登陆失败则直接到官方网站下载,原因是FTP可以自己组建企业内部网站,所以可以让用户在文件中定义多个,而且一般FTP内部下载比较快,所以优先考虑内部网络;如果提供的内部站点无法下载,则提供第二选择,直接到官方下载,因为官方的站点只有一个,而且是固定的,所以没有让用户直接选择,而是直接搞到批处理了。见代码部分的:
SET HTTPSITE="HTTP://securityresponse.symantec.com/avcenter/download/pages/US-N95.html"
SET HTTPDSITE="http://definitions.symantec.com/defs/"


2007-2-1 02:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 9 楼』:  

根据同事和测试人的反馈,再纠正两个小问题,如果下载了以前的代码,请重新更新压缩包中的UPDATE.BAT中的代码为如下代码:

纠正的问题:
1.如果没有SHARE目录而放到FTP根目录可以查询到而无法下载的问题,把原CD SHARE 在LS的代码改为 ls SHARE\*%DOWNFILE% downlst.txt解决了原来的问题
2.增加变量DOWNFILE=-i32.exe,目的为解决有的人使用企业版的ND,下载的不是-i32.exe而是下载的-x86.exe文件,如果你使用的是企业版则把变量改为DOWNFILE=-x86.exe即可.
3.下载后只保留最后一次下载的文件,原来其他下载的所有病毒更新文件自动删除以免产生很多病毒定义文件,免除手动清除的烦恼.
@ECHO OFF
REM 设置基本环境变量
SET FTPSITEN=1
SET HTTPSITE="HTTP://securityresponse.symantec.com/avcenter/download/pages/US-N95.html"
SET HTTPDSITE="http://definitions.symantec.com/defs/"
SET DOWNFILE=-i32.exe
SET downlst=
SET TIMEOUT=3
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
REM CMDOW @ /DIS
FOR /F "TOKENS=1,2 DELIMS=: " %%I IN ('CHCP') DO SET LAN=%%J

REM 根据系统语言进行编码转化
IF "%JUT%"=="1" GOTO CHS
IF "%LAN%"=="936" GOTO :CHS
IF "%LAN%"=="437" GOTO :CHS
:CHT
SET JUT=1
START /WAIT CT.EXE /B /S "UPDATE.BAT" /D "UPDATECHT.BAT"
START /B/WAIT UPDATECHT.BAT
IF EXIST UPDATECHT.BAT DEL UPDATECHT.BAT
EXIT

:CHS
ECHO                  ND杀毒自动更新程序V1.0可以实现如下功能
ECHO      根据站点列表更新病毒库;记录操作记录和出错误记录;自动识别繁简系统
ECHO 提示:本程序可能不适合WIN9X机器;如果下载的包内有多个文件,请保持原文件名和路径
ECHO.
ECHO      ╔──────────────────────────────╗
ECHO      │                                                            │
ECHO      │                   ND杀毒更新系统V1.0                       │
ECHO      │              本程序由小布点(秋语)编写制作                  │
ECHO      │          欢迎使用小布点制作的绿色软件和其他程序            │
ECHO      │     本程序可以自由复制,使用和发布,版权归作者本人所有       │
ECHO      │  QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com  │
ECHO      │                                                            │
ECHO      ╚──────────────────────────2007─㊣╝
ECHO.
ECHO 正在进行更新准备工作,请稍候.........
TITLE 正在进行更新准备工作,请稍候.........
PING 127.0.0.1 -n %TIMEOUT% >NUL
IF EXIST ftplst.ini GOTO :FTPLOOP
>ftplst.ini  ECHO user anonymous
>>ftplst.ini ECHO.
>>ftplst.ini ECHO ls SHARE\*%DOWNFILE% downlst.txt
>>ftplst.ini ECHO quit
if exist login.log del /q/f login.log

REM 1.首先使用根据用户定义的FTP站点列表和登陆方式获取最新病毒库的下载文件列表;如果失败则记录到login.log中并转到HTTP下载
CLS
:FTPLOOP
ECHO 正在获取病毒库最新档案文件,请等待.......
TITLE 正在获取病毒库最新档案文件,请等待.......
IF NOT EXIST FTPSITE.INI GOTO :HTTPLOOP
if EXIST downlst.txt del /q/f downlst.txt >NUL
FOR /F "eol=;skip=%FTPSITEN%" %%A IN (FTPSITE.INI) DO (
   ECHO ==================以下是登陆站点:%%A的错误信息================== >>login.log
   FTP -n -s:ftplst.ini %%A >>login.log
   FOR /F %%I IN (downlst.txt) DO SET downlst=%%I
   setlocal enabledelayedexpansion
   IF NOT DEFINED downlst (SET /A FTPSITEN+=1 && GOTO :FTPLOOP)
   IF EXIST !downlst! GOTO FEXIST
   CLS
   ECHO 正在下载最新档案文件:!downlst!,请等待.......
   TITLE 正在下载最新档案文件:!downlst!,请等待.......
   if exist login.log del /q/f login.log >NUL
   >ftpsetup.ini  ECHO user anonymous
   >>ftpsetup.ini ECHO.
   >>ftpsetup.ini ECHO get SHARE\!downlst!
   >>ftpsetup.ini ECHO quit
   ftp -n -s:ftpsetup.ini %%A >NUL
   if exist downlst.txt del /q/f downlst.txt >NUL
   if exist ftplst.ini del /q/f ftplst.ini >NUL
   if exist ftpsetup.ini del /q/f ftpsetup.ini >NUL
   endlocal
   GOTO :INSTALL
)
GOTO :HTTPLOOP

:HTTPLOOP
WGET %HTTPSITE% -q -O HTTPSITE.HTML >NUL
H2TXT /IP HTTPSITE.HTML|FIND /I "%DOWNFILE%" >downlst.txt & CLS
FOR /F %%I IN (downlst.txt) DO SET downlst=%%I
IF NOT DEFINED downlst GOTO :DOWNERR
if exist login.log del /q/f login.log >NUL
IF EXIST %downlst% GOTO FEXIST
ECHO 正在下载最新档案文件:%downlst%,请等待.......
TITLE 正在下载最新档案文件:%downlst%,请等待.......
WGET %HTTPDSITE%%downlst% -q
GOTO :INSTALL

REM 2.安装病毒定义库文件.
:INSTALL
CLS
ECHO 下面将安装最新的病毒库档案:%downlst%,请等待......
TITLE 下面将安装最新的病毒库档案:%downlst%,请等待......
start /b/wait "" "%downlst%"
GOTO :END

:FEXIST
CLS
if exist login.log del /q/f login.log >NUL
ECHO 最近没有更新档案,按任意键退出程序.......
PAUSE >NUL
GOTO :END

:DOWNERR
ECHO ==================以下是登陆站点:symantec.com的错误信息==================>>login.log
ECHO 无法登陆symantec.com站点或无法获取最新病毒定义档案>>login.log
ECHO =========================================================================>>login.log
ECHO.>>login.log
ECHO 下载出错,请仔细检查下面错误记录内容,如有不清楚的地方可以咨询我.QQ:9399100 >>login.log
TITLE 下载出错,请仔细检查错误记录内容
TYPE login.log
ECHO 按任意键退出程序.......
PAUSE >NUL
GOTO :END

:END
IF EXIST %downlst% attrib +H %downlst% >NUL
DEL /Q/F/A:-H *%DOWNFILE% >NUL
IF EXIST %downlst% attrib -H %downlst% >NUL
if EXIST downlst.txt DEL /Q/F downlst.txt >NUL
if EXIST ftplst.ini DEL /Q/F ftplst.ini >NUL
if EXIST ftpsetup.ini DEL /Q/F ftpsetup.ini >NUL
IF EXIST HTTPSITE.TXT DEL /Q/F HTTPSITE.HTML
IF EXIST HTTPSITE.HTML DEL /Q/F HTTPSITE.HTML
EXIT


2007-2-3 00:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: