分享交流
合作共赢!

Windows 下ftp批处理脚本的写法

交互命令下FTP

一般状况下, 我们使用FTP 到某台机器上进行文件上传、下载的操作,

在命令方式下,基本上是:

1.ftp  主机名

2.输入用户名

3. 输入密码

4. 切换模式(asc 或者是 bin)

5. 上传或下载(put 或者是 get)

6. 退出(bye  or quit)

如果使用一些FTP 工具的话, 操作起来就更简单了。

ftp 批处理脚本

如果我们要定期的自动做一些FTP的动作的话, 可以写一个批处理档, 放到Windows 的Task 中定期执行。

这种思路的一般解法是:写两个批处理文件, 一个是主批处理,用来调用FTP; 另外一个是ftp 操作的批处理(这个文件的后缀名可以随意)。

这里的实例的两个文件是:main.bat ; ftptmp.bat

main.bat 的内容就很简单:

ftp -n -s:"ftptmp.bat"

ftptmp.bat的内容如下:

dsdsdfafaf

open $ftphost

user $username $password

cd $filepath

get $filename

bye

exit

注意:命令中的变量需自行替换。

带参数的脚本

像以上的变量, 可能并不是一开始就决定的, 这部分需要动态的通过变量的方式传递进去。

想一想, Windows 的 .bat 脚本执行的时候,可以在后面直接加上一些参数, 在脚本中通过  %0%, %1%这样的方式获取。

举个例子, 以上执行main.bat 时,如果在命令行输入:

main.bat 111 222 333

则在main.bat 的脚本文件中

%0%  对应的是 main.bat

%1%  对应的是 111

……

看例子:

@echo off

echo %0%>>main.log

echo %1%>>main.log

ftp -n -s:”ftptmp.bat”

现在的问题是: ftptmp.bat 这个文件中 ftp 的脚本中并不能获取bat 设置的变量。

所以, 想一想解决思路可以是:  使用 main.bat 临时产生ftptmp.bat这个文件(变量替换成传入的值)

文件类似:

@echo off

echo open %1%>>>ftptmp.bat

echo user %2% %3%>>ftptmp.bat

echo cd %4%>>ftptmp.bat

echo get %5%>>ftptmp.bat

echo bye>>ftptmp.bat

echo exit>>ftptmp.bat

ftp -n -s:ftptmp.bat

调用的时候:

main.bat host username password filepath filename

 

参考

ftp [-v] [-d] [-i] [-n] [-g] [-s:FileName] [-a] [-w:WindowSize] [-A] [Host]

参数:

-v:禁止显示远程服务器响应。

-d:启用调试、显示在客户端和服务器之间传递的所有ftp命令。

-i:多个文件传送时关闭交互提示。

-n:禁止自动登录到初始连接。

-g:禁用文件名组,它允许在本地文件和路径名中使用通配符字符(*和?)。

-s:FileName:指定包含ftp命令的文本文件;当ftp启动后,这些命令将自动运行。该参数中不允许有空格。使用该开关而不是重定向(>)。

-a:在捆绑数据连接时使用任何本地接口。

-w:WindowSize:替代默认大小为4096的传送缓冲区。

-A:匿名登陆。

Host:指定要连接到远程计算机的计算机名或IP地址。如果指定,计算机必须是最后一个参数。

 

简单批处理内部命令简介

1.echo 命令

打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。

语法

echo [{on|off}] [message]

Sample:@echo off / echo hello world

在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。

2.@ 命令

表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。

Sample:@echo off

@echo Now initializing the program,please wait a minite…

@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)

3.goto 命令

指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。

语法:goto label (label是参数,指定所要转向的批处理程序中的行。)

Sample:

if {%1}=={} goto noparms

if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)

@Rem check parameters if null show usage

:noparms

echo Usage: monitor.bat ServerIP PortNumber

goto end

标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

4.Rem 命令

注释命令,在C语言中相当与/*——–*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。

Rem Message

Sample:@Rem Here is the descr1ption.

5.Pause 命令

运行 Pause 命令时,将显示下面的消息:

Press any key to continue . . .

Sample:

@echo off

:begin

copy a:*.* d:back

echo Please put a new disk into driver A

pause

goto begin

在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按我饧 绦 怼?

6.Call 命令

从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。

语法

call [Drive:][Path] FileName [BatchParameters] [:label [arguments]

参数

[Drive:}[Path] FileName

指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。

7.start 命令

调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。

入侵常用参数:

MIN 开始时窗口最小化

SEPARATE 在分开的空间内开始 16 位 Windows 程序

HIGH 在 HIGH 优先级类别开始应用程序

REALTIME 在 REALTIME 优先级类别开始应用程序

WAIT 启动应用程序并等候它结束

parameters 这些为传送到命令/程序的参数

执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。

 

ftp命令详解

1 !

Escape to the shell.

从 ftp 子系统临时退出到命令提示符下。

要返回到 ftp 子系统,请在命令提示符下键入 exit。

语法:!

2 append

Append to a file

使用当前文件类型设置将本地文件附加到远程计算机上的文件。

语法:append LocalFile [RemoteFile]

3 ascii

Set ascii transfer type.

设定以ASCII方式传送文件(缺省值)

语法:ascii

4 bell

Beep when command completed

每个文件传输命令执行完后,将会切换到一个可听见的声音。

语法:bell

5 binary

Set binary transfer type

设定以二进制方式传送文件。

语法:binary

6 bye

Terminate ftp session and exit.

终止主机FTP进程,并退出。

语法:bye

7 cd

Change remote working directory.

更改远程计算机上的工作目录。

语法:cd RemoteDirectory

8 close

Terminate ftp session

结束与远程服务器进行的 FTP 会话,并停留在 ftp> 提示符下。

语法:close

9 delete

Delete remote file.

删除远程计算机上的文件。

语法:delete Remotefile

10 dir

List contents of remote directory

显示远程计算机上的目录文件和子目录列表。

语法:dir [remote-directory] [local-file]

11 disconnect

Terminate ftp session.

从远程计算机断开连接,同时保留 ftp> 提示符。

语法:disconnect

12 get

Receive file.

使用当前文件传送类型将远程文件复制到本地计算机。

语法:get [remote-file] [local-file]

13 glob

Toggle metacharacter expansion of local file names.

切换本地文件名的通配符扩展。

语法:glob

14 hash

Toggle printing `#‘ for each buffer transferred.

切换已传输的每个数据块的数字签名 (#) 打印。

语法:hash

15 help

Print local help information.

显示 ftp 子命令说明。

语法:help [Command]

16 lcd

Change local working directory.

更改本地计算机上的工作目录。默认情况下,工作目录是启动ftp的目录。

语法:lcd [directory]

17 literal

Send arbitrary ftp command.

将参数逐字发送到远程 FTP 服务器。单一 FTP 答复代码返回。

语法:literal Argument [ …]

18 ls

List contents of remote directory.

在远程目录上显示文件简短目录和子目录。

语法:ls [RemoteDirectory] [LocalFile]

19 mdelete

Delete multiple files.

删除远程计算机上的多个文件。

语法:mdelete RemoteFiles [ …]

20 mdir

List contents of multiple remote directories.

显示远程目录中的文件和子目录列表。

语法:mdir RemoteFiles [ …] LocalFile

21 mget

Get multiple files.

使用当前文件传送类型将远程多个文件复制到本地计算机。

语法:mget RemoteFiles [ …]

22 mkdir

Get multiple files

创建远程计算机上的目录。

语法:mkdir directory

23 mls

List contents of multiple remote directories.

在远程目录上显示文件简短目录和子目录。

语法:mls RemoteFiles [ …]LocalFile

24 mput

Send multiple files.

使用当前多个文件传送类型将本地文件复制到远程计算机上。

语法:mput LocalFiles [ …]

25 open

Connect to remote tftp.

与指定的 FTP 服务器连接。

语法:open Computer [Port]

26 prompt

Force interactive prompting on multiple commands.

在 prompt 的开模式和关模式之间切换。

语法:prompt

27 put

Send one file.

使用当前一个文件传送类型将本地文件复制到远程计算机上。

语法:put LocalFile [RemoteFile]

28 pwd

Print working directory on remote machine.

打印远程计算机上的当前目录。

语法:pwd

29 quit

Terminate ftp session and exit.

结束与远程计算机的 FTP 会话并退出 ftp 到命令提示符下。

语法:quit

30 quote

Send arbitrary ftp command.

将参数逐字发送到远程 FTP 服务器。单一 FTP 答复代码返回。

语法:quote Argument [ …]

31 recv

Receive file.

使用当前文件传送类型将远程文件复制到本地计算机。

语法:recv RemoteFile [LocalFile]

32 remotehelp

Get help from remote server.

显示远程命令的帮助。

语法:remotehelp [Command]

33 rename

Rename file.

重命名远程文件。

语法:rename FileName NewFileName

34 rmdir

Remove directory on the remote machine.

删除远程目录。

语法:mdir Directory

35 send

Send one file.

使用当前文件传送类型将本地文件复制到远程计算机上。

语法:send LocalFile [RemoteFile]

36 status

Show current status.

显示 FTP 连接的当前状态。

语法:status

37 trace

Toggle packet tracing.

切换数据包跟踪。

语法:trace

38 type

Set file transfer type.

设置或显示文件传送类型。

语法:type [TypeName]

39 user

Send new user information

指定远程计算机的用户。

语法:user UserName [Password] [Account]

40 verbose

Toggle verbose mode.

切换 verbose 模式。

语法:verbose

此内容查看价格0.1立即购买
赞(2) 打赏
未经允许不得转载:琼杰笔记 » Windows 下ftp批处理脚本的写法

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册