Board logo

标题: [文件操作] U盘下FTP自动下载批处理程序无法读取FTP登录文件信息 [打印本页]

作者: oasislee    时间: 2009-6-2 11:13     标题: U盘下FTP自动下载批处理程序无法读取FTP登录文件信息

各位高手你们好,最近公司有个需求就是用户直接插入U盘到电脑后,运行U盘上批处理文件就可以直接将FTP文件下载到 本地U盘,从而实现文件自动下载。我的在网上找到的方法是写2个文件,一个是批处理主文件 getfile.bat 运行,另一个是FTP登录文件 getfile.ftp。此方法我本人在本地硬盘已经实现了,但是我的目标是所有的读写运行下载文件操作都在U盘上完成。我现在碰到的问题是,在批处理文件运行到读取登录FTP时读不出U盘上的getfile.ftp文件,说无法读取文件。可是DOS执行窗口显示出的文件路径都是正确的,因此我百思不得其解。请高手指点,以下为源代码及执行窗口截图。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

@echo off

for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID /value') do (
  set DriveU=%%a
)
echo.%DriveU%

set f=%DriveU%

set BASE=%f%
set BASE_PATH= %BASE%\video
set LOG_FILE= %BASE_PATH%\ftpgetfile.log
set FLAG_FILE=%BASE_PATH%\tmp.tmp ##因要和另外一个程序通讯,所以用了这个状态标志文件,程序开始时写0进去,结束时再修改为1。这样另一个程序就可以判断何时文件接收结束,并开始处理文件。

set SAVE_PATH=%BASE_PATH%
set TMP_PATH= %BASE_PATH%\temp
set REMOTE_PATH=/wwwroot
REM 程序开始运行
echo =========================================================== >> %LOG_FILE%
set DATET=%date%%time%
echo 程序开始运行,时间:%DATET% >> %LOG_FILE%

if not exist %BASE_PATH% (
   mkdir %BASE_PATH%
)
echo %BASE_PATH%
echo 测试!
         pause>nul

if not exist %SAVE_PATH% (
   mkdir %SAVE_PATH%
)
echo %SAVE_PATH%
echo 测试!
         pause>nul

if not exist %TMP_PATH% (
   mkdir %TMP_PATH%
)
echo %TMP_PATH%
echo 测试!
         pause>nul

cd %TMP_PATH%
echo 0 > %FLAG_FILE%
if not exist %SAVE_PATH% (
echo 无法找到标志文件%SAVE_PATH% >> %LOG_FILE%
goto _END
)
ftp  -s:"%BASE_PATH%\getfile.ftp" >> %LOG_FILE%

echo %BASE_PATH%\getfile.ftp
echo 本次获得的文件如下:>> %LOG_FILE%

dir /B %TMP_PATH%\S*.swf > %TMP_PATH%\filelist.tmp ##本次接收的文件列表,供movefile.bat删除文件的标识
dir /B %TMP_PATH%\*.swf >> %LOG_FILE%
move /Y %TMP_PATH%\*.swf %SAVE_PATH%\
FOR /F "usebackq delims=" %%i IN (`type filelist.tmp`) DO call %BASE_PATH%\movefile.bat %%i %LOG_FILE% %REMOTE_PATH%
:_END
echo 1 > %FLAG_FILE%
del %TMP_PATH%\filelist.tmp

set DATET=%date%%time%
echo 程序运行结束,时间:%DATET% >> %LOG_FILE%
echo =========================================================== >> %LOG_FILE%

echo 文件更新已经完成 请您按下任意键或者 选择Ctrl+c 组合键退出!
         pause>nul


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

以下为运行窗口图供参考
[attach]2940[/attach]
作者: oasislee    时间: 2009-6-2 14:02

刚才吃过饭又运行了一下 发现问题又莫名其妙解决了,这次不提示打不开程序了这次提示说登录失败,附如下图

我顺便把我的getfile.ftp文件给拿出来大家看看,请大家看看,因为昨天就是这么运行好的呀,今天就不行了,奇怪的很。

open 192.168.1.111
user s
ttob

prompt on

cd /wwwroot
mget *.swf
bye
quit
exit
作者: Batcher    时间: 2009-6-2 19:41

学学怎么调试代码吧:
不要双击运行
把代码保存为H:\test.bat
把@echo off删除
在合适的地方加上pause
开始
运行
cmd
H:\test.bat
看看执行过程再好好想想,如果想不通,就贴出来让别人帮你讲解。

本版规则
1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论;
2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件;
3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;


Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2