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

[网络连接] 批处理从FTP下载文件为何出错?

各位大侠:
    由于小弟的工作原因,每天都要从公司的FTP服务器上下载一些数据供平时工作中分析使用,为了提高工作效率,小弟写了个批处理指令每天按时执行,这样到办公室后就不用再自己下载了!但是奇怪的事情是小弟我写的批处理指令可以成功下载文件,而且下载后提示接收了大概6M字节的数据,但是在本地查看该文件时,却发现其文件大小为0,请各位大侠帮帮小弟我看看是什么原因!我截了两张图,具体的请大家看看附件就知道了!!

楼主的ftp代码呢?

TOP

回2楼,我的FTP代码其实很简单,主要就是用到一条语句 "ftp -i -s:command.txt remote_IP"
其中command.txt文件里主要是登陆用户名和密码还有要下载的文件列表

TOP

是不是文件被空文件覆盖掉了?lz还是上传个完整代码来看看吧

TOP

下面是小弟的代码,还请各位指教,我试着用这个批处理下载其他的文件都是正常,但就是下载想要的文件时就会出现下载下来的文件大小为0的情况,我再想是不是因为文件属性的问题,因为我用total command 下载这些文件时发现跟我用批处理下载下来的文件名不一样,用批处理下载下来的文件总是会比原文件名少几个字符,但是指令执行完后确实提示下载了很多的流量!!!!!
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set Log_Path=D:\
  4. set Remote_IP=#########
  5. set path=%path%;d:\program files\winrar\
  6. ::取昨天的日期
  7. set yy=%Date:~0,4%
  8. set mm=%Date:~5,2%
  9. set dd=%Date:~8,2%
  10. set /a od=!dd!-1
  11. if !od!==0 call :dd0
  12. if !mm!==0 call :mm0
  13. set /a dd=od
  14. set "dd=0!dd!"
  15. set "dd=!dd:~-2!"
  16. set "mm=0!mm!"
  17. set "mm=!mm:~-2!"
  18. set yymmdd=!yy!!mm!!dd!  
  19. ::从文件STSFilelist.txt中判断并创建所需要的文件列表到文件WantedFileList.txt
  20. echo eric>>%Log_Path%WantedFileList.txt
  21. echo solaris7>>%Log_Path%WantedFileList.txt
  22. echo type ASCII>>%Log_Path%WantedFileList.txt
  23. echo cd /var/opt/ericsson/sgw/outputfiles/apgfiles/sts/>>%Log_Path%WantedFileList.txt
  24. for /f %%j in (%Log_Path%STSFilelist.txt) do (
  25.     set filename=%%j
  26.     set FileTime=%%j
  27.     set FileTime=!FileTime:~10,4!
  28.     if "!filename:~-12,5!"=="CZBSC" (
  29.        if "!filename:~1,8!"=="%yymmdd%" (
  30.           if "!filename:~-5,4!"=="1000" (
  31.                                            findstr "!FileTime!" D:\TimeFilter.txt>nul
  32.                                            if !ERRORLEVEL!==0  echo %%j>>mget %Log_Path%WantedFileList.txt
  33.                                         ) else (
  34.                                                   if "!filename:~-5,4!"=="1003" (
  35.                                                                                   findstr "!FileTime!"
  36. D:\TimeFilter.txt>nul
  37.                                                                                   if !ERRORLEVEL!==0  echo
  38. mget %%j>>%Log_Path%WantedFileList.txt
  39.                                                                                 )
  40.                                                )
  41.        )
  42.     )   
  43. )
  44. echo close>>%Log_Path%WantedFileList.txt
  45. echo quit>>%Log_Path%WantedFileList.txt
  46. ::下载所需要的文件并压缩
  47. cd ftp\
  48. ftp -i -s:%Log_Path%WantedFileList.txt %Remote_IP%
  49. for "useback" %%j in (`dir /a-d /b`) do (
  50.   winrar a -df -m5 STS%yymmdd% %%j
  51. )
  52. move STS%yymmdd%.rar Log_Path%
  53. :dd0
  54. set /a mm=!mm!-1
  55. for %%a in (1 3 5 7 8 10 12)do set %%add=31
  56. set /a pddd=!yyyy!*10/4
  57. set pd2d=!pddd:~-1,1!
  58. set 2dd=28
  59. if !pd2d!==0 set 2dd=29
  60. for %%b in (4 6 9 11)do set %%bdd=30
  61. set od=!%mm%dd!
  62. goto :eof
  63. :mm0
  64. set /a yy=!yy!-1
  65. set mm=12 && set od=31
  66. goto :eof
复制代码

TOP

这是用total command 下载下来的同一个文件,可以发现两个文件名不一样,这是不是导致用批处理下载下来的文件大小为0的原因呢?还请各位大侠指教啊!!!!

TOP

学习了,不过看不懂

TOP

本帖最后由 zz100001 于 2011-4-2 15:36 编辑

这种情况一般在下载压缩文档的时候容易出现,把你的第三行改成
  1. type binary
复制代码
或者
  1. bin
复制代码

TOP

回zz100001:
    我也试过用二进制进行下载,可是结果还是一样!真是不知道问题到底出现在哪里,还请各位大侠多多帮忙啊!!!!!

TOP

返回列表