2007年末,在上海的第二个项目中需要实现自动上传文件,操作系统为windows,批处理脚本如下:
@echo off
rem ==================================================================
rem 文件名称:AutoFtp.bat
rem 文件标识:
rem 摘 要:up or download files from the ftp server
rem 作 者:will
rem 修 改 者:
rem 修改内容:
rem 修改时间:
rem 版 本:2007-12-12
rem ==================================================================
rem -----------------------Variable Definition------------------------
set LOCAL_FILE_PATH=C:/Docume~1/Admini~1/桌面/Downlo~1/142439
set SERVERIP=192.168.1.1
set FTPPORT=21
set USERNAME=user
set PASSWORD=password
set FILENAME=t_status.del
set SERVER_FILE_PATH=/users/niwp/temp/14:24:39-071217
set CONNECTED_FLAG=n
set LOGEDIN_FLAG=n
set DOWNLOADED_FLAG=n
rem -----------------------Prepare For Download Files-----------------
cd /d %LOCAL_FILE_PATH%
>>log.txt echo ========================%date% %time%==========================
rem -----------------------Check NetWork Status-----------------------
ping -n 2 %SERVERIP% > nul
if %ERRORLEVEL% NEQ 0 (
echo Error: NetWork Error!
echo Error: Can't get Reply from %SERVERIP%!
>>log.txt echo Error: NetWork Error!
>>log.txt echo Error: Can't get Reply from %SERVERIP%!
echo.
echo Press any Key to Exit!
pause >nul
exit
) else (
echo Connecting to %SERVERIP%...
>>log.txt echo Connecting to %SERVERIP% %PORT% with %USERNAME% %PASSWORD%
)
@call :STARTFTP
cd /d %LOCAL_FILE_PATH%
rem ------------------------Check FTP Connection----------------------
findstr /I /B "220[^0-9]" ftp.txt > nul
if %ERRORLEVEL% EQU 0 (
set CONNECTED_FLAG=y
)
findstr /I /B "230[^0-9]" ftp.txt > nul
if %ERRORLEVEL% EQU 0 (
set LOGEDIN_FLAG=y
)
if %CONNECTED_FLAG% NEQ y (
echo Error: Connect to %SERVERIP% Failed!
>>log.txt echo Error: Connect to %SERVERIP% Failed!
echo.
echo Press any to Exit!
pause >nul
exit
)
if %LOGEDIN_FLAG% NEQ y (
echo Error: Login Failed!
echo Error: User Name or Password incorrect!
>>log.txt echo Error: Login Failed!
>>log.txt echo Error: User Name or Password incorrect!
echo.
echo Press any Key to Exit!
pause > nul
exit
) else (
echo Connected to %SERVERIP%!
echo.
>>log.txt echo Connected to %SERVERIP%!
)
rem ----------------------Check Server File whether exist or not-----------------
findstr /I /E "%FILENAME% [not found]" ftp.txt > nul
if %ERRORLEVEL% EQU 0 (
echo Error: None Existed %SERVER_FILE_PATH%/%FILENAME% !
>>log.txt echo None Existed %SERVER_FILE_PATH%/%FILENAME% !
del /q %FILENAME%
echo.
echo Press any Key to Exit!
pause > nul
exit
) else (
echo Downloading %FILENAME% ...
>>log.txt echo --------------------------File On %SERVERIP%-----------------------------------
>>log.txt echo %SERVER_FILE_PATH%
>>log.txt echo.
findstr /I /E "%FILENAME%" ftp.txt | findstr ":" >> log.txt
>>log.txt echo --------------------------------------------------------------------------------
>>log.txt echo.
>>log.txt echo Downloading %FILENAME% ...
)
rem ---------------------Check File whether downloaded or not---------
if EXIST %FILENAME% (
set DOWNLOADED_FLAG=y
echo Downloaded Sucessfully!
echo.
echo %LOCAL_FILE_PATH%/%FILENAME%
dir %LOCAL_FILE_PATH%/%FILENAME% | findstr "%FILENAME%"
echo.
echo.
>>log.txt echo Downloaded Sucessfully!
>>log.txt echo --------------------------File Have Downloaded----------------------------------
>>log.txt echo %LOCAL_FILE_PATH%
>>log.txt echo.
dir %LOCAL_FILE_PATH%/%FILENAME% | findstr "%FILENAME%" >> log.txt
>>log.txt echo --------------------------------------------------------------------------------
>>log.txt echo.
>>log.txt echo.
>>log.txt echo.
del /q command.txt
del /q ftp.txt
echo Exit after 5s!
ping -n 5 127.0.0.1 > nul
exit
)
:STARTFTP
rem ------------------------Clean temp file---------------------------
if EXIST command.txt del /Q command.txt
rem ------------------------Ftp Command in command.txt-----------------
rem >>command.txt echo bell
>>command.txt echo open %SERVERIP% %FTPPORT%
>>command.txt echo user %USERNAME%
>>command.txt echo %PASSWORD%
>>command.txt echo type binary
>>command.txt echo cd %SERVER_FILE_PATH%
>>command.txt echo dir %FILENAME%
>>command.txt echo get %FILENAME%
>>command.txt echo quit
rem -------------------------Start FTP---------------------------------
cd /d %LOCAL_FILE_PATH%
ftp -n -s:command.txt>ftp.txt