用批处理来自动执行FTP命令

来源:互联网 发布:黎明杀机淘宝多少钱 编辑:程序博客网 时间:2024/04/30 09:55

http://bbs.winzheng.com/viewthread.php?tid=1076709

 

用批处理来自动执行FTP命令

不知道有没有人聊过类似的话题,但是这的确是我自己摸索出来的一点个人小经验:

也许现在BT、eMule更被大家所关注,当初在学校的时候还是很喜欢ftp这种文件的传输方式。
在没有强大的FTP客户端的情况下,我也是试着使用Windows自带的FTP命令上传了一个DvBBS 7的所有文件,那时候的确是很痴迷!
我们的Windows是自带有FTP客户端,如果你感兴趣的话,可以在开始-->运行cmd(XP是这样的,2000好像是command),然后输入ftp -help,得到ftp的命令参数及帮助:


C:/>ftp -help

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] [-w:windowsize] [-A] [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.
  -w:buffersize  Overrides the default transfer buffer size of 4096.
  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.

这个命令并没有FlashFXP,CuteFTP等工具好用,但它的确是一个值得我们去尝试的命令。
ftp henryhoo
这样的命令来连接FTP服务器,连接以后会提示你填写用户名。这里有一点,匿名账户的用户名是anonymous,而不是空,这与其他的FTP客户端有些不同。

User (henryhoo:(none)): anonymous
331 User name okay, please send complete E-mail address as password.
Password:

填写用户密码登录,匿名用户的密码为空,直接回车即可。
完整格式:

C:/>ftp henryhoo
Connected to henryhoo.
User (henryhoo:(none)): anonymous
331 User name okay, please send complete E-mail address as password.
Password:
230 User logged in, proceed.

登录成功后,输入help,得到命令帮助,有点回到DOS时代的意味。


ftp> help
Commands may be abbreviated.  Commands are:

!               delete          literal         prompt          send
?               debug           ls              put             status
append          dir             mdelete         pwd             trace
ascii           disconnect      mdir            quit            type
bell            get             mget            quote           user
binary          glob            mkdir           recv            verbose
bye             hash            mls             remotehelp
cd              help            mput            rename
close           lcd             open            rmdir

这就是可以使用的一些命令了,其实那些FTP工具也都是调用这些命令来完成各种操作的。
使用help命令来寻求帮助


ftp> help mdir
mdir            List contents of multiple remote directories

在这里我就不进行一一解释了,有兴趣的话可以多试试,最好在自己的机器上架设一个FTP服务器,IIS或这Serv-u都是很不错的选择,IIS更简单一些,但管理能力没有Serv-u强大。

讲的有些远了,有了前面的铺垫,批处理就简单了。
前面的FTP命令不是支持这样的命令结构吗?

FTP [-s:filename]

那么以下,就是filename里的基本模型了,每一条命令一行

open [主机名]
[用户名]
[密码]
[要执行的ftp命令]

如下面的内容就是一个匿名登录并显示根目录文件的简单脚本,将它保存成一个文件,如ftp.txt:
匿名用户的例子:

open henryhoo
anonymous

ls

其他用户的例子,在这个命令中,先打开henryhooFTP服务器,用admin登录,密码是admin,然后用ls命令查看所有文件,cd update是进入到update文件夹中,mkdir 20060801则是创建一个20060801的文件夹:

open henryhoo
admin
admin
ls
cd update
mkdir 20060801

然后我们打开命令行,执行:

C:/>ftp -s:E:/ftp.txt

对于服务器管理员来说,这也能的命令也许很有用,可以根据自己的需要把它们写成批处理文件放在任务中定期的执行,可以很灵活的进行自动管理。
就说到这里吧,关于应用还需要大家自己去摸索,去尝试,多用才是关键!

原创粉丝点击