标题: 求助: 如何实现从ftp自动下载更新文件
[打印本页]
作者: wxgstest
时间: 2008-3-15 10:32
标题: 求助: 如何实现从ftp自动下载更新文件
如何用bat 自动从远程ftp 自动下载更新的程序,同时把本地的过期的文件删除,并且执行最新的程序? 自动登入远程到ftp 和下载 偶会写了。 关键现在不知道如何 比较远程文件是否比本地文件更新 ,(一般来说远程文件如果更新 它的文件名会变成xxx(日期).exe),求教了
作者: HAT
时间: 2008-3-15 14:07
把远程服务器上的文件名里面的日期格式贴出来
把本机的日期格式贴出来
作者: wxgstest
时间: 2008-3-15 15:22
都是(mmdd).exe
作者: wxgstest
时间: 2008-3-15 21:52
标题: 自己今天学习后写的,有点笨
自己今天学习后写的,有点笨 请大家多指教 现在还不知道如何下载后自动执行还望各位大大 指教 不胜感激了。
@echo off
set BASE=e:
set BASE_PATH=e:\ftptest
set SAVE_PATH=%BASE_PATH%\save
set TMP_PATH=%BASE_PATH%\temp
set LOG_FILE=%BASE_PATH%\ftpgetfile.log
set DATET=%date%%time%
echo 程序开始运行,时间:%DATET% >> %LOG_FILE%
if not exist %BASE_PATH% (
mkdir %BASE_PATH%
)
if not exist %SAVE_PATH% (
mkdir %SAVE_PATH%
)
if not exist %TMP_PATH% (
mkdir %TMP_PATH%
)
ftp -n -s:"%BASE_PATH%\getfile.ftp" >> %LOG_FILE%
echo 本次获得的文件如下:>> %LOG_FILE%
dir /B E:\ftptest\temp\ >> %LOG_FILE%
:: 先下载 然后进行文件名称比较(假设只有一个文件哟,实际情况也只更新一个文件。这儿自己没有考虑第一次下载的情况)
cd %TMP_PATH%\
for /F "delims==" %%i IN ('dir /b') do set m=%%~ni
cd %SAVE_PATH%\
for /F "delims==" %%j IN ('dir /b') do set n=%%~nj
if %m% == %n% (goto _exit) else goto _update
:_update
::这儿没有考虑第一次下载的情况
del /f/q E:\ftptest\save\*.exe 2>nul
move /y E:\ftptest\temp\*.exe E:\ftptest\save\ >nul
set DATET=%date%%time%
echo 程序运行结束,时间:%DATET% >> %LOG_FILE%
echo =========================================== >> %LOG_FILE%
exit
:_exit
echo same file
del /f /q E:\ftptest\temp\*.exe
set DATET=%date%%time%
echo 程序运行结束,时间:%DATET% >> %LOG_FILE%
echo =========================================== >> %LOG_FILE%
exit
以下是getfile.ftp
==========================================
::getfile.ftp
open 192.168.1.100
user test
test
bin
cd /test/test
prompt off
lcd e:\ftptest\temp
mget *.exe
bye
exit
==========================================
[
Last edited by wxgstest on 2008-3-15 at 09:54 PM ]
作者: vkill
时间: 2008-3-18 16:25
wget 来 代替 ftp