中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » DOS批处理实现自动FTP功能-有些不明,请指教!
作者:
标题: DOS批处理实现自动FTP功能-有些不明,请指教! 上一主题 | 下一主题
lovehack2006
初级用户





积分 135
发帖 64
注册 2006-12-20
状态 离线
『楼 主』:  DOS批处理实现自动FTP功能-有些不明,请指教!

DOS批处理实现自动FTP功能

跟UNIX的SHELL编程来说,DOS的批处理编程功能没那么强大,不过有时候不想动刀动枪的(开发工具),用批处理实现一些功能还是很方便的。

本文就是为了应对每日自动从服务器取数据写的批处理,利用了WINDOW平台的AT功能和DOS 批处理。

该程序在WIN2000下通过。


功能如同标题,比较简单,就不介绍了,下面是整个代码,大家自己看吧:)

@echo off
rem  FileName : myftp
rem  本程序从各FTP服务器取对应数据保存到机器目录,每次根据系统时间建立日期目录
rem  保存数据
rem  如果需要定时执行,请执行AT命令或者在 开始-》设置-》控制面板-》任务计划 中定义

rem 数据保存目录,在该目录下按日期建子目录
set LOCAL_HOME=f:
cd %LOCAL_HOME%

rem 取系统日期
@FOR /F "usebackq delims= " %%i IN (`date /T`) DO set WORKDATE=%%i
rem 判断日期目录是否存在,不存在就建
if not exist %WORKDATE% md %WORKDATE%

rem 判断命令是否执行成功
if not errorlevel 0 echo 建立目录[%WORKDATE%]失败

rem 进入对应日期目录
cd %WORKDATE%

rem 从FTP服务器取数据,多个FTP则重复该部分内容
rem @echo为在FTP方式下的命令操作顺序
rem 数据
@echo open 127.0.0.1>ftpcmd
@echo user guest guest>>ftpcmd
@echo prompt>>ftpcmd
@echo cd data>>ftpcmd
@echo get EXCHANGE%WORKDATE%>>ftpcmd
@echo get INSTERESTRATE>>ftpcmd
@echo bye>>ftpcmd
@ftp -n<ftpcmd >null  
@del ftpcmd

rem 返回到起始目录
cd %LOCAL_HOME%
cd ..


以上的批处理,我有几个地方不明白---请大家帮我一下!!

1、

首先我要问的是 我们用 >>写入的文件有没有限制,,是不是任何文件都可以

不过我看的大多文章都是说写入的是一个文本文件,,这里写入的是ftpcmd

没有扩展名,,一般的文章写的是  某个txt文件!!(我指的仅是这个P)

2、@ftp -n<ftpcmd >null

这句话我不明白,,我也看过相关的教程说是不显示P的命令提示

什么虚拟设备的。。。这个是不是会生成一个文件 null 无扩展名的??

3、一般的关于FTP的教程写的是ftp -s 的这里为什么不用-s ?

4、set LOCAL_HOME=f:  这个地方不明白,设目录为F:吗?

如果想进入F盘不就是F:就行 吗?干吗后面还要加一个CD???


[ Last edited by lovehack2006 on 2007-2-14 at 03:08 AM ]

2007-2-14 15:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovehack2006
初级用户





积分 135
发帖 64
注册 2006-12-20
状态 离线
『第 2 楼』:  

没有人回我的贴子,我顶。。。

2007-2-15 13:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovehack2006
初级用户





积分 135
发帖 64
注册 2006-12-20
状态 离线
『第 3 楼』:  

我再顶哦。。。没人看的。。没有人帮我吗?

2007-2-16 02:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 4 楼』:  

if not errorlevel 0 echo 建立目录[%WORKDATE%]失败
这个命令最厌人,有时候不能成功执行的。

2007-2-16 03:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
rubik
初级用户





积分 102
发帖 35
注册 2006-3-16
状态 离线
『第 5 楼』:  

Transfers files to and from a computer running an FTP server service
(sometimes called a daemon). Ftp can be used interactively.

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuf
fer] [-b:asyncbuffers] [-w:windowsize] [host]

  -v              Suppresses display of remote server responses.
  -n              Suppresses auto-login upon initial connection.
  -i              Turns off interactive prompting during multiple file
                  transfers.
  -d              Enables debugging.
  -g              Disables filename globbing (see GLOB command).
  -s:filename     Specifies a text file containing FTP commands; the
                  commands will automatically run after FTP starts.
  -a              Use any local interface when binding data connection.
  -A              login as anonymous.
  -x:send sockbuf Overrides the default SO_SNDBUF size of 8192.
  -r:recv sockbuf Overrides the default SO_RCVBUF size of 8192.
  -b:async count  Overrides the default async count of 3
  -w:buffer size  Overrides the default transfer buffer size of 65535.
  host            Specifies the host name or IP address of the remote
                  host to connect to.

Notes:
  - mget and mput commands take y/n/q for yes/no/quit.
  - Use Control-C to abort commands.


--
提问还是不要加红字吧,感觉那是高手回答才用的字体,呵呵


--
提问还是不要加红字吧,感觉那是高手回答才用的字体,呵呵

2007-2-16 04:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 6 楼』:  

1. 这个没有是规定的,什么文件都可以,没有后缀也可以的啊
2. 你试下不就知道了
3. <txt 也是从文件获取,你用过nc吗?nc就是这样用的
4. 用set是为了以后改的方便

2007-2-16 05:10
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zjonah
新手上路





积分 10
发帖 5
注册 2006-7-17
状态 离线
『第 7 楼』:  

顶一下吧

2007-2-16 12:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yangzhiyi
中级用户





积分 261
发帖 123
注册 2006-6-6
状态 离线
『第 8 楼』:  

1. 这个没有是规定的
2. >null 应为>nul ,所以就生成一个 >null 文件
3.-n 在建立初始连接后禁止自动登录功能。<ftpcmd 是从ftpcmd文件中读取命令, ftpcmd 文件如果是正确的话用 ftp -s 是最好的,命令本身的功能。
4.set LOCAL_HOME=f: 设置个 LOCAL_HOME变量为F: 盘 cd %LOCAL_HOME% 就是想进入到F: 的意思,但这错了。如果是想保存在F盘的话应该为
set LOCAL_HOME=f:
%LOCAL_HOME%
cd\
如果是想保存当前位置的话应该为
set "LOCAL_HOME=%cd%"
但从上面看它根本不用设置它,不要它和后面的就行。

2007-2-16 13:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gne3
高级用户

DOS学徒


积分 526
发帖 252
注册 2007-2-12
状态 离线
『第 9 楼』:  

顶下了

2007-2-17 01:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lovehack2006
初级用户





积分 135
发帖 64
注册 2006-12-20
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by yangzhiyi at 2007-2-16 12:22 AM:
1. 这个没有是规定的
2. >null 应为>nul ,所以就生成一个 >null 文件
3.-n 在建立初始连接后禁止自动登录功能。<ftpcmd 是从ftpcmd文件中读取命令 ...

谢谢兄弟们了,,,我来试一下哦。。。。

2007-2-17 03:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bd123456789
中级用户





积分 360
发帖 216
注册 2007-5-29
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by yangzhiyi at 2007-2-16 01:22 PM:
1. 这个没有是规定的
2. >null 应为>nul ,所以就生成一个 >null 文件
3.-n 在建立初始连接后禁止自动登录功能。<ftpcmd 是从ftpcmd文件中读取命令 ...

在建立初始连接后禁止自动登录功能
这句话是什么意思????

2007-6-29 22:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bd123456789
中级用户





积分 360
发帖 216
注册 2007-5-29
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by yangzhiyi at 2007-2-16 01:22 PM:
1. 这个没有是规定的
2. >null 应为>nul ,所以就生成一个 >null 文件
3.-n 在建立初始连接后禁止自动登录功能。<ftpcmd 是从ftpcmd文件中读取命令 ...

在建立初始连接后禁止自动登录功能
这句话是什么意思????

2007-6-29 22:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sonicandy
中级用户





积分 273
发帖 91
注册 2007-5-7
状态 离线
『第 13 楼』:  

我觉得自动登录就是自动用匿名帐户anonymous登录

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

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


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



论坛跳转: