中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » U盘下FTP自动下载批处理程序无法读取FTP登录文件信息
作者:
标题: U盘下FTP自动下载批处理程序无法读取FTP登录文件信息 上一主题 | 下一主题
oasislee
新手上路





积分 2
发帖 2
注册 2009-6-1
状态 离线
『楼 主』:  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


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



[ Last edited by oasislee on 2009-6-1 at 23:49 ]

2009-6-1 23:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
oasislee
新手上路





积分 2
发帖 2
注册 2009-6-1
状态 离线
『第 2 楼』:  

我顺便把我的getfile.ftp文件给拿出来大家看看

open 192.168.1.120
user sy
syit601

prompt on

cd /wwwroot
mget *.swf
bye
quit
exit

[ Last edited by oasislee on 2009-6-2 at 03:13 ]

2009-6-2 00:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: