[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[代码合集] 下载和删除四个目录的文件,下载都成功,删除只有最前的一个成功

@echo off
rem 指定FTP用户名
set ftpUser=***
rem 指定FTP密码
set ftpPass=******
rem 指定FTP服务器地址
set ftpIP=*.*.*.*


rem 1.数据库------------------服务器
set ftpFolder=mysqlbak

rem 2.工程日志----------服务器
set ftpFolder2=webapp/ROOT/logs

rem 3.还款计划----------------服务器
set ftpFolder3=repaymentPlan

rem 4.程序包------------------服务器
set ftpFolder4=webbak

rem 1.数据库------------------本地    0
set LocalFolder=e:\aliyunbak\dbbackup   

rem 2.玖和宝工程日志----------本地   1
set LocalFolder2=e:\aliyunbak\jiuhebaologs   

rem 3.还款计划----------------本地   0
set LocalFolder3=e:\aliyunbak\repaymentPlan

rem 4.程序包------------------本地   1
set LocalFolder4=e:\aliyunbak\webbak
rem 假设本机日期格式为yyyy-mm-dd(今天下载文件20090714.txt)


set DownDaysAgo=0
set DownDaysAgo2=1
rem 假设系统日期的格式为yyyy-mm-dd
call ateToDays %date:~0,4% %date:~5,2% %date:~8,2% DownPassDays
set /a DownPassDays-=%DownDaysAgo%
set /a DownPassDays2=DownPassDays-%DownDaysAgo2%
call :DaysToDate %DownPassDays% DstYear DstMonth DstDay
call :DaysToDate %DownPassDays2% DstYear3 DstMonth3 DstDay3
set DownDstDate=%DstYear%-%DstMonth%-%DstDay%
set DownDstDate2=%DstYear%%DstMonth%%DstDay%
set DownDstDate3=%DstYear3%-%DstMonth3%-%DstDay3%
set DownDstFile=jhddb%DownDstDate%.sql.gz
set DownDstFile2=jhd.log.%DownDstDate3%
set DownDstFile3=repayment%DownDstDate2%.xls
set DownDstFile4=%DownDstDate3%.tar.gz
echo %DownDaysAgo%天前的日期是%DownDstDate%


set DelDaysAgo=30
rem 假设系统日期的格式为yyyy-mm-dd
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% DelPassDays
set /a DelPassDays-=%DelDaysAgo%
call :DaysToDate %DelPassDays% DstYear DstMonth DstDay
set DelDstDate=%DstYear%-%DstMonth%-%DstDay%
set DelDstDate2=%DstYear%%DstMonth%%DstDay%
set DelDstFile=jhddb%DelDstDate%.sql.gz
set DelDstFile2=jhd.log.%DelDstDate%
set DelDstFile3=repayment%DelDstDate2%.xls
set DelDstFile4=%DelDstDate2%.tar.gz
echo %DelDaysAgo%天前的日期是%DelDstDate%


set ftpFile=%temp%\TempFTP.txt
>"%ftpFile%" (
  echo %ftpUser%
  echo %ftpPass%
  echo cd "%ftpFolder%"
  echo bin
  echo mget "%DownDstFile%"
  echo mdelete "%DelDstFile%"
  echo bye       
)
set ftpFile2=%temp%\TempFTP2.txt
>"%ftpFile2%" (
  echo %ftpUser%
  echo %ftpPass%
  echo cd "%ftpFolder2%"
  echo bin
  echo mget "%DownDstFile2%"
  echo mdelete "%DelDstFile2%"
  echo bye
)
set ftpFile3=%temp%\TempFTP3.txt
>"%ftpFile3%" (
  echo %ftpUser%
  echo %ftpPass%
  echo cd "%ftpFolder3%"
  echo ascii
  echo mget "%DownDstFile3%"
  echo mdelete "%DelDstFile3%"
  echo bye       
)
set ftpFile4=%temp%\TempFTP4.txt
>"%ftpFile4%" (
  echo %ftpUser%
  echo %ftpPass%
  echo cd "%ftpFolder4%"
  echo bin
  echo mget "%DownDstFile4%"
  echo mdelete "%DelDstFile4%"
  echo bye
)
cd /d "%LocalFolder%"
ftp -v -i -s:"%ftpFile%" %ftpIP%
cd /d "%LocalFolder2%"
ftp -v -i -s:"%ftpFile2%" %ftpIP%
cd /d "%LocalFolder3%"
ftp -v -i -s:"%ftpFile3%" %ftpIP%
cd /d "%LocalFolder4%"
ftp -v -i -s:"%ftpFile4%" %ftpIP%



:DateToDays %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd
setlocal ENABLEEXTENSIONS
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF

服务器上有mysqlbak、、webapp/ROOT/logs、、repaymentPlan、、webbak四个目录,,,本地对应的位置是e:\aliyunbak\dbbackup 、、e:\aliyunbak\jiuhebaologs  、、                          e:\aliyunbak\repaymentPlan、、 e:\aliyunbak\webbak,,,下载是下载当天或头一天的文件,,,删除都是删除30天前的文件,,,其中下载全部成功,,,但是删除的时候只能成功删除mysqlbak目录里面的文件,,,另外三个目录里面的文件删除失败,,,是什么原因??

TOP

把批处理生成的文件 %temp%\TempFTP2.txt 的内容发出来看看

TOP

***
******
cd "webapp/ROOT/logs"
bin
mget "jhd.log.2015-07-29"
mdelete "jhd.log.2015-06-30"
bye

TOP

本帖最后由 bkxmgx 于 2015-7-30 11:52 编辑

***
******
cd "mysqlbak"
bin
mget "jhddb2015-07-30.sql.gz"
mdelete "jhddb2015-06-30.sql.gz"
bye

TOP

。。。。。。。。。

TOP

TempFTP.txt的内容如下:
***
******
cd "mysqlbak"
bin
mget "jhddb2015-07-30.sql.gz"
mdelete "jhddb2015-06-30.sql.gz"
bye
TempFTP2.txt的内容如下:
***
******
cd "webapp/ROOT/logs"
bin
mget "jhd.log.2015-07-29"
mdelete "jhd.log.2015-06-30"
bye
TempFTP3.txt的内容如下:
***
******
cd "repaymentPlan"
ascii
mget "repayment20150730.xls"
mdelete "repayment20150630.xls"
bye       
TempFTP4.txt的内容如下:
***
******
cd "webbak"
bin
mget "2015-07-29.tar.gz"
mdelete "20150630.tar.gz"
bye

TOP

就第一个可以删除成功,后面三个都失败 ,删除失败的时候报错信息为:Delete operation failed.

TOP

回复 4# bkxmgx


1、打开CMD窗口,手工连接FTP然后按照这个文件里面的命令一步一步执行,能否成功?
2、把顶楼代码修改一下,只保留处理webapp/ROOT/logs的部分,能否成功?

TOP

ftp> cd "repaymentPlan"
ftp> bin
ftp> mget "repayment20150730.xls"
ftp> mdelete "repayment20150730.xls"
Delete operation failed.
ftp> bye

TOP

ftp> cd "mysqlbak"
ftp> bin
ftp> mget "jhddb2015-07-30.sql.gz"
ftp> mdelete "jhddb2015-07-30.sql.gz"
ftp> bye
***********************************************
ftp> cd "webapp/ROOT/logs"
ftp> bin
ftp> mget "jhd.log.2015-07-30"
ftp> mdelete "jhd.log.2015-07-29"
Delete operation failed.
ftp> bye
**********************************
ftp> cd "repaymentPlan"
ftp> bin
ftp> mget "repayment20150730.xls"
ftp> mdelete "repayment20150730.xls"
Delete operation failed.
ftp> bye
***********************************
ftp> cd "webbak"
ftp> bin
ftp> mget "20150730.tar.gz"
ftp> mdelete "20150630.tar.gz"
Delete operation failed.
ftp> bye

TOP

我刚才把完整的bat文件分成4个单独的bat  每个bat只下载和删除一个目录的文件,执行结果如上,只有第一个目录下载成功,后面三个全失败。。。

TOP

ps:下载和删除的文件都是存在的。。。

TOP

对了  其中有个现象就是
ftp> cd "mysqlbak"
ftp> bin
ftp> mget "jhddb2015-07-29.sql.gz"
ftp> mdelete "jhddb2015-06-30.sql.gz"
ftp> bye

ftp> cd "webapp/ROOT/logs"
ftp> bin
ftp> mget "jhd.log.2015-07-27"

完整的bat文件执行到这里的时候突然停 了下来等几十秒才往下执行。。

TOP

完整的bat执行命令如下:

ftp> cd "mysqlbak"
ftp> bin
ftp> mget "jhddb2015-07-29.sql.gz"
ftp> mdelete "jhddb2015-06-30.sql.gz"
ftp> bye

ftp> cd "webapp/ROOT/logs"
ftp> bin
ftp> mget "jhd.log.2015-07-27"
ftp> mdelete "jhd.log.2015-06-30"
Delete operation failed.
ftp> bye

ftp> cd "repaymentPlan"
ftp> ascii
ftp> mget "repayment20150729.xls"
ftp> mdelete "repayment20150630.xls"
Delete operation failed.
ftp> bye

ftp> cd "webbak"
ftp> bin
ftp> mget "2015-07-27.tar.gz"
ftp> mdelete "20150630.tar.gz"
Delete operation failed.
ftp>bye

TOP

返回列表