返回列表 发帖

回复 60楼 的帖子

仔细看看35楼的代码:
      echo get "%%i" "%DownFolder%\%%i"
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 61楼 的帖子

谢谢,那如果要把数据同时存入2个文件夹怎么写?

TOP

回复 62楼 的帖子

你把现在最新的完整代码贴出来,我帮你加上这个功能。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 63楼 的帖子

谢谢!~
@echo off
rem 指定FTP用户名
set ftpUser=asx
rem 指定FTP密码
set ftpPass=asx-asx
rem 指定FTP服务器地址
set ftpIP=172.19.103.7
rem 指定待下载的文件位于FTP服务器的什么位置
set ftpFolder=/export/home/PROD/ntcdata
rem 指定从FTP下载下来的文件存放到什么地方
set DownFolder=E:\Temp
rem 指定下载几天前的文件
set DaysAgo=1
set ftpDir=%temp%\TempDir.txt
set ftpDown=%temp%\TempDown.txt
rem 假设本机日期格式为yyyy-mm-dd
set FileY=%date:~0,4%
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=DaysAgo
call :DaysToDate %PassDays% DstYear DstMonth DstDay
>"%ftpDir%" echo.%ftpUser%
>>"%ftpDir%" echo.%ftpPass%
>>"%ftpDir%" echo bin
>>"%ftpDir%" echo cd "%ftpFolder%"
>>"%ftpDir%" echo dir * "%temp%\FileList.txt"
>>"%ftpDir%" echo bye
start ftp -v -i -s:"%ftpDir%" %ftpIP%
rem 根据实际情况自行调节延迟时间
ping -n 200 127.1 >nul
findstr /i ":*\.SWM$" "%temp%\FileList.txt">"%temp%\FileDate.txt"
findstr /i ":*\.TWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
findstr /i ":*\.OWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
>"%ftpDown%" echo.%ftpUser%
>>"%ftpDown%" echo.%ftpPass%
>>"%ftpDown%" echo bin
>>"%ftpDown%" echo cd "%ftpFolder%"
(for /f "usebackq tokens=1-9 delims= " %%a in ("%temp%\FileDate.txt") do (
  setlocal enabledelayedexpansion
  if "%%f" equ "Jan" (
    set FileM=01
  ) else if "%%f" equ "Feb" (
    set FileM=02
  ) else if "%%f" equ "Mar" (
    set FileM=03
  ) else if "%%f" equ "Apr" (
    set FileM=04
  ) else if "%%f" equ "May" (
    set FileM=05
  ) else if "%%f" equ "Jun" (
    set FileM=06
  ) else if "%%f" equ "Jul" (
    set FileM=07
  ) else if "%%f" equ "Aug" (
    set FileM=08
  ) else if "%%f" equ "Sep" (
    set FileM=09
  ) else if "%%f" equ "Oct" (
    set FileM=10
  ) else if "%%f" equ "Nov" (
    set FileM=11
  ) else if "%%f" equ "Dec" (
    set FileM=12
  )
  set FileD=10%%g
  set FileD=!FileD:~-2!
  if "!FileM!" equ "%DstMonth%" (
    if "!FileD!" equ "%DstDay%" (
     echo get "%%i" "%DownFolder%\%%i"
    )
  )
  endlocal
))>>"%ftpDown%"
>>"%ftpDown%" echo bye
start ftp -v -i -s:"%ftpDown%" %ftpIP%
goto :eof
: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 :EOFCOPY

TOP

回复 64楼 的帖子

两个思路:
1、先从FTP上面下载到一个文件夹中,下载完之后用xcopy复制到另一个文件夹。难点在于不容易判断下载操作什么时候能够完成。
2、从FTP上面下载两次。缺点在于下载时间会延长,会增加服务器的负担。代码如下:
@echo off
rem 指定FTP用户名
set ftpUser=asx
rem 指定FTP密码
set ftpPass=asx-asx
rem 指定FTP服务器地址
set ftpIP=172.19.103.7
rem 指定待下载的文件位于FTP服务器的什么位置
set ftpFolder=/export/home/PROD/ntcdata
rem 指定从FTP下载下来的文件存放到什么地方
set DownFolder=E:\Temp
set DownFolder2=E:\Temp2
rem 指定下载几天前的文件
set DaysAgo=1
set ftpDir=%temp%\TempDir.txt
set ftpDown=%temp%\TempDown.txt
rem 假设本机日期格式为yyyy-mm-dd
set FileY=%date:~0,4%
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=DaysAgo
call :DaysToDate %PassDays% DstYear DstMonth DstDay
>"%ftpDir%" echo.%ftpUser%
>>"%ftpDir%" echo.%ftpPass%
>>"%ftpDir%" echo bin
>>"%ftpDir%" echo cd "%ftpFolder%"
>>"%ftpDir%" echo dir * "%temp%\FileList.txt"
>>"%ftpDir%" echo bye
start ftp -v -i -s:"%ftpDir%" %ftpIP%
rem 根据实际情况自行调节延迟时间
ping -n 200 127.1 >nul
findstr /i ":*\.SWM$" "%temp%\FileList.txt">"%temp%\FileDate.txt"
findstr /i ":*\.TWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
findstr /i ":*\.OWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
>"%ftpDown%" echo.%ftpUser%
>>"%ftpDown%" echo.%ftpPass%
>>"%ftpDown%" echo bin
>>"%ftpDown%" echo cd "%ftpFolder%"
(for /f "usebackq tokens=1-9 delims= " %%a in ("%temp%\FileDate.txt") do (
  setlocal enabledelayedexpansion
  if "%%f" equ "Jan" (
    set FileM=01
  ) else if "%%f" equ "Feb" (
    set FileM=02
  ) else if "%%f" equ "Mar" (
    set FileM=03
  ) else if "%%f" equ "Apr" (
    set FileM=04
  ) else if "%%f" equ "May" (
    set FileM=05
  ) else if "%%f" equ "Jun" (
    set FileM=06
  ) else if "%%f" equ "Jul" (
    set FileM=07
  ) else if "%%f" equ "Aug" (
    set FileM=08
  ) else if "%%f" equ "Sep" (
    set FileM=09
  ) else if "%%f" equ "Oct" (
    set FileM=10
  ) else if "%%f" equ "Nov" (
    set FileM=11
  ) else if "%%f" equ "Dec" (
    set FileM=12
  )
  set FileD=10%%g
  set FileD=!FileD:~-2!
  if "!FileM!" equ "%DstMonth%" (
    if "!FileD!" equ "%DstDay%" (
     echo get "%%i" "%DownFolder%\%%i"
     echo get "%%i" "%DownFolder2%\%%i"
    )
  )
  endlocal
))>>"%ftpDown%"
>>"%ftpDown%" echo bye
start ftp -v -i -s:"%ftpDown%" %ftpIP%
goto :eof
: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 :EOFCOPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果我能保证在15分钟内完成ftp下载,按照第一种思路,复制的代码如何实现?

TOP

回复 66楼 的帖子

@echo off
rem 指定FTP用户名
set ftpUser=asx
rem 指定FTP密码
set ftpPass=asx-asx
rem 指定FTP服务器地址
set ftpIP=172.19.103.7
rem 指定待下载的文件位于FTP服务器的什么位置
set ftpFolder=/export/home/PROD/ntcdata
rem 指定从FTP下载下来的文件存放到什么地方
set DownFolder=E:\Temp
set DownFolder2=E:\Temp2
rem 指定下载几天前的文件
set DaysAgo=1
set ftpDir=%temp%\TempDir.txt
set ftpDown=%temp%\TempDown.txt
rem 假设本机日期格式为yyyy-mm-dd
set FileY=%date:~0,4%
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=DaysAgo
call :DaysToDate %PassDays% DstYear DstMonth DstDay
>"%ftpDir%" echo.%ftpUser%
>>"%ftpDir%" echo.%ftpPass%
>>"%ftpDir%" echo bin
>>"%ftpDir%" echo cd "%ftpFolder%"
>>"%ftpDir%" echo dir * "%temp%\FileList.txt"
>>"%ftpDir%" echo bye
start ftp -v -i -s:"%ftpDir%" %ftpIP%
rem 根据实际情况自行调节延迟时间
ping -n 200 127.1 >nul
findstr /i ":*\.SWM$" "%temp%\FileList.txt">"%temp%\FileDate.txt"
findstr /i ":*\.TWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
findstr /i ":*\.OWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
>"%ftpDown%" echo.%ftpUser%
>>"%ftpDown%" echo.%ftpPass%
>>"%ftpDown%" echo bin
>>"%ftpDown%" echo cd "%ftpFolder%"
(for /f "usebackq tokens=1-9 delims= " %%a in ("%temp%\FileDate.txt") do (
  setlocal enabledelayedexpansion
  if "%%f" equ "Jan" (
    set FileM=01
  ) else if "%%f" equ "Feb" (
    set FileM=02
  ) else if "%%f" equ "Mar" (
    set FileM=03
  ) else if "%%f" equ "Apr" (
    set FileM=04
  ) else if "%%f" equ "May" (
    set FileM=05
  ) else if "%%f" equ "Jun" (
    set FileM=06
  ) else if "%%f" equ "Jul" (
    set FileM=07
  ) else if "%%f" equ "Aug" (
    set FileM=08
  ) else if "%%f" equ "Sep" (
    set FileM=09
  ) else if "%%f" equ "Oct" (
    set FileM=10
  ) else if "%%f" equ "Nov" (
    set FileM=11
  ) else if "%%f" equ "Dec" (
    set FileM=12
  )
  set FileD=10%%g
  set FileD=!FileD:~-2!
  if "!FileM!" equ "%DstMonth%" (
    if "!FileD!" equ "%DstDay%" (
     echo get "%%i" "%DownFolder%\%%i"
    )
  )
  endlocal
))>>"%ftpDown%"
>>"%ftpDown%" echo bye
start ftp -v -i -s:"%ftpDown%" %ftpIP%
rem 根据实际情况自行调节延迟时间
ping -n 1000 127.1 >nul
copy /y "%DownFolder%\*.*" "%DownFolder2%"
goto :eof
: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 :EOFCOPY
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果想采取其它延时方法,可参考:批处理中的延时
http://bbs.bathome.net/viewthread.php?tid=233
http://bbs.bathome.net/viewthread.php?tid=3693#pid23312
1

评分人数

    • lazygc520: 很好的解决了问题.回答的很耐心。PB + 4
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

请问我运行这个脚本的时候,FileList.txt根本没有生成,请高手指点为什么。谢谢!

TOP

回复 69# Qiqiqiqi


    你运行的几楼的脚本?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表