给你个例子吧,很久以前写的了,那时候还不熟,所以有很多绕来绕去的地方,而且两个文件实际可以合写成一个,有些地方可以模块化处理。
但是就不修改了,看看我那时候简单点的思维,你或许更容易理解。
当时的目的是,运行程序后能连接到公司ftp服务器,自动登录并获取可用的软件版本列表,并下载最新版本的软件回来,然后解压、并运行新版的软件。
用法:
注意这两个文件要放在 e:\bak 文件夹下面运行,不想放那里就修改一下。
将下面这段随便保存为个什么 .bat 就好了,这个是主程序,把IP跟用户名密码替换掉。
@echo off&cls
md e:\bak\temp
del /f /y /q e:\bak\temp\*.*
cls
:获得文件列表
echo !cls>>e:\bak\temp\new.txt
echo !echo off >e:\bak\temp\new.txt
echo !title 本程序由exzzz制作,正在下载最新的备份文件,请不要关闭本窗口!>>e:\bak\temp\new.txt
echo !cls>>e:\bak\temp\new.txt
echo !del /f e:\bak\bak.rar>>e:\bak\temp\new.txt
echo !cls>>e:\bak\temp\new.txt
echo open 58.61.XXX.XXX>>e:\bak\temp\new.txt
echo ch>>e:\bak\temp\new.txt
echo 1 >>e:\bak\temp\new.txt
echo hash>>e:\bak\temp\new.txt
echo bin>>e:\bak\temp\new.txt
echo lcd e:\bak>>e:\bak\temp\new.txt
echo cd chzs\exzzz\bak>>e:\bak\temp\new.txt
echo ls . e:\bak\temp\baklist.txt>>e:\bak\temp\new.txt
:下一行调用批处理生成新的任务文件
echo !call e:\bak\getbak.bat>>e:\bak\temp\new.txt
echo quit>>e:\bak\temp\new.txt
:运行前面的程序,以产生文件列表
ftp -s:e:\bak\temp\new.txt
:运行ftp生成的任务文件
ftp -s:e:\bak\temp\newjob.txt
下面这段就一定要保存为 getbak.bat 了,并且与上一个文件放在一个目录里面。IP,账号什么的自己修改好
@echo off&cls
echo =====================================
echo.
for /f "tokens=2 delims=k." %%a in (e:\bak\temp\baklist.txt) do (echo 检测到资源管理系统%%a版&set bakfile=%%a)
rem ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
goto end
:因为发现实在太多XXX不明白按C后按Y是什么意思,所以直接简化
:不显示手动选择版本了,直接下最新版本好了
:相当的郁闷,为什么现在那么多XXX没有一点理解能力.....
:如果日后需要,将☆之间的内容删除即可恢复为可手动选择的版本
rem ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
:choz
echo =====================================
echo 以上是可供选择的版本,请选择任务...
echo =====================================
echo 按 Y 将默认下载 资源系统 %bakfile% 版
echo 按 N 手动输入版号下载指定的版本
echo =====================================
echo 如果只是误操作,请直接关闭本窗口
choice /c YN /n
if %ERRORLEVEL% equ 1 goto end
if %ERRORLEVEL% equ 2 goto man
:man
set /p bakfile=请手动输入要下载的版本号,例如 0420 :
:end
:获得任务文件
echo !cls>>e:\bak\temp\newjob.txt
echo !echo off >e:\bak\temp\newjob.txt
echo !title 本程序由exzzz制作,正在下载最新的程序文件,请不要关闭本窗口!>>e:\bak\temp\newjob.txt
echo !del /f e:\bak\bak.rar>>e:\bak\temp\newjob.txt
echo !cls>>e:\bak\temp\newjob.txt
echo open 58.61.XXX.XXX>>e:\bak\temp\newjob.txt
echo ch>>e:\bak\temp\newjob.txt
echo 1 >>e:\bak\temp\newjob.txt
echo hash>>e:\bak\temp\newjob.txt
echo bin>>e:\bak\temp\newjob.txt
echo lcd e:\bak>>e:\bak\temp\newjob.txt
echo cd chzs\exzzz\bak>>e:\bak\temp\newjob.txt
echo !cls>>e:\bak\temp\newjob.txt
echo get bak%bakfile%.rar bak.rar>>e:\bak\temp\newjob.txt
echo quit>>e:\bak\temp\newjob.txt
Last edited by exzzz on 2010-4-12 at 11:29 ]