利用批处理命令操作FTP服务器

        在众多批处理命令中,有一个ftp命令,它能够访问ftp服务器并能在电脑与服务器中互相传递文件。前提是电脑要连接网络而且还要有ftp服务器。ftp命令的基本操作具体如下所示:

常见的ftp命令
命令作用格式及用法
open打开服务器open 服务器地址
lcd显示或切换本地目录

lcd (显示本地目录)

lcd XXX(切换本地目录,XXX表示本地目录)

mput

从本地计算机向服务器

发送文件

mput XXX(XXX表示文件在计算机的地址)
mget

从本地计算机向服务器

获取文件

mget XXX(XXX表示文件在服务器的地址)
ascii以ascii模式传输文件ascii (运行结果:200 Type set to A.)
binary以binary模式传输文件binary (运行结果:200 Type set to I.)
del删除文件del XXX(XXX表示文件在服务器的地址)
rmdir删除目录rmdir XXX(XXX表示服务器的路径)
mkdir创建目录

mkdir XXX(XXX表示在服务器要创建的路径)

注意:只能一级一级地创建目录。

cd切换目录cd XXX(XXX表示服务器已有的路径)
dir

详细显示当前目录的

文件及子目录

dir 
ls大致显示当前目录的

文件及子目录

ls
quit退出ftp命令quit

 

        有了以上操作,再加上最近学的批处理命令。于是我就想简单地设计一个能访问ftp服务器的脚本工具。这样就可以实现计算机操作服务器了。

        于是,我设计的程序就有了思路。既然要访问服务器,那么首先就要用户输入服务器地址,用户名和密码。然后再让程序处理用户输入并填入ftp的open命令了,最后根据用户选择的操作来进行对服务器的操作控制。这样,我设计的程序如下所示:

@echo off
::--------------------------------------主体-----------------------------------
color 6
set /p addr=请输入服务器地址:
set /p user=请输入用户名:
set /p password=请输入密码:
mkdir C:\FTP
:start
color 2
echo 【1:查看主目录】【2:获取文件】【3:上传文件】【4:删除文件】
echo 【5:创建目录  】【6:删除目录】【7:打开目录】【8:退出程序】
choice /c 12345678 /n /m 请选择操作项目:
if %errorlevel% == 8 goto 8
if %errorlevel% == 7 goto 7
if %errorlevel% == 6 goto 6
if %errorlevel% == 5 goto 5
if %errorlevel% == 4 goto 4
if %errorlevel% == 3 goto 3
if %errorlevel% == 2 goto 2
if %errorlevel% == 1 goto 1
::-------------------------------------退出操作--------------------------------
:8
del C:\FTP\*.tmp
exit
::-------------------------------------打开目录操作----------------------------
:7
set /p open_file=请输入要打开的目录路径:
echo open %addr%>>C:\FTP\7.tmp
echo %user%>>C:\FTP\7.tmp
echo %password%>>C:\FTP\7.tmp
echo lcd C:\FTP>>C:\FTP\7.tmp
echo cd %open_file%>>C:\FTP\7.tmp
echo dir>>C:\FTP\7.tmp
echo quit>>C:\FTP\7.tmp
ftp -s:C:\FTP\7.tmp
pause
pushd C:\FTP
del *.tmp
popd C:\FTP
goto start
::------------------------------------删除目录操作-----------------------------
:6
set /p del_file=请输入要删除的目录名:
echo open %addr%>>C:\FTP\6.tmp
echo %user%>>C:\FTP\6.tmp
echo %password%>>C:\FTP\6.tmp
echo lcd C:\FTP>>C:\FTP\6.tmp
echo rmdir %del_file%>>C:\FTP\6.tmp
echo quit>>C:\FTP\6.tmp
ftp -s:C:\FTP\6.tmp
pause
pushd C:\FTP
del *.tmp
popd C:\FTP
goto start
::------------------------------------创建目录操作-----------------------------
:5
set /p make_file=请输入要创建的目录名:
echo open %addr%>>C:\FTP\5.tmp
echo %user%>>C:\FTP\5.tmp
echo %password%>>C:\FTP\5.tmp
echo lcd C:\FTP>>C:\FTP\5.tmp
echo mkdir %make_file%>>C:\FTP\5.tmp
echo quit>>C:\FTP\5.tmp
ftp -s:C:\FTP\5.tmp
pause
pushd C:\FTP
del *.tmp
popd C:\FTP
goto start
::------------------------------------删除文件操作----------------------------
:4
set /p del_file=请输入要删除的文件:
echo open %addr%>>C:\FTP\4.tmp
echo %user%>>C:\FTP\4.tmp
echo %password%>>C:\FTP\4.tmp
echo lcd C:\FTP>>C:\FTP\4.tmp
echo del %del_file%>>C:\FTP\4.tmp
echo quit>>C:\FTP\4.tmp
ftp -s:C:\FTP\4.tmp
pause
pushd C:\FTP
del *.tmp
popd C:\FTP
goto start
::------------------------------------上传文件操作----------------------------
:3
set /p up=请输入要上传的文件(可以将文件拖拽至本窗口):
set /p des=请输入要上传文件的目标目录:
call :handle1 %up% \%des%
:handle1
echo open %addr%>>C:\FTP\3.tmp
echo %user%>>C:\FTP\3.tmp
echo %password%>>C:\FTP\3.tmp
echo lcd C:\FTP>>C:\FTP\3.tmp
echo cd %~pn2>>C:\FTP\3.tmp
echo mput %~pnx1>>C:\FTP\3.tmp
echo y>>C:\FTP\3.tmp
echo quit>>C:\FTP\3.tmp
ftp -s:C:\FTP\3.tmp
pause
pushd C:\FTP
del *.tmp
popd C:\FTP
goto start
::------------------------------------获取文件操作----------------------------
:2
set /p down=请输入要获取的文件名对应的路径名:
call :handle \%down%
:handle
echo open %addr%>>C:\FTP\2.tmp
echo %user%>>C:\FTP\2.tmp
echo %password%>>C:\FTP\2.tmp
echo lcd C:\FTP>>C:\FTP\2.tmp
echo cd %~p1>>C:\FTP\2.tmp
echo mget %~nx1>>C:\FTP\2.tmp
echo y>>C:\FTP\2.tmp
echo quit>>C:\FTP\2.tmp
ftp -s:C:\FTP\2.tmp
pause
pushd C:\FTP
del *.tmp
start C:\FTP
popd C:\FTP
goto start
::------------------------------------查看主目录操作--------------------------
:1
echo open %addr%>>C:\FTP\1.tmp
echo %user%>>C:\FTP\1.tmp
echo %password%>>C:\FTP\1.tmp
echo lcd C:\FTP>>C:\FTP\1.tmp
echo dir>>C:\FTP\1.tmp
echo quit>>C:\FTP\1.tmp
ftp -s:C:\FTP\1.tmp
pause
pushd C:\FTP
del *.tmp
popd C:\FTP
goto start

        主体代码段可以参考我发布的第一篇文章,里面有讲解choice命令的使用方法。点击此处了解。观看上述程序不难看出每个操作的代码段都会有一些相似的语句如下:

echo open %addr%>>C:\FTP\X.tmp
echo %user%>>C:\FTP\X.tmp
echo %password%>>C:\FTP\X.tmp
echo lcd C:\FTP>>C:\FTP\X.tmp
echo 操作一>>C:\FTP\X.tmp
echo .....>>C:\FTP\X.tmp
echo quit>>C:\FTP\X.tmp
ftp -s:C:\FTP\X.tmp
pause
REM X表示操作编号

这个代码段的作用是:获取变量addr,user,password的值,其中addr表示用户输入的ftp服务器地址,user表示用户输入的服务器用户名,password表示用户输入的服务器密码,将本地目录更改为C:\FTP,进行一系列的服务器操作,接着退出ftp命令并将ftp命令写入到C:\FTP里的X.tmp文件。此时X.tmp里面包含可执行的ftp命令。最后利用ftp -s:C:\FTP\X.tmp执行X.tmp里面的ftp命令并利用pause暂停程序运行。

        此外,每个代码段还有一些相似的语句如下所示:

pushd C:\FTP
del *.tmp
popd C:\FTP
goto start

这些语句的作用是利用del语句删除ftp命令操作遗留的临时文本文件,即文件后缀名为.tmp的文本文件。至于pushd和popd的作用就类似于数据结构中的栈,pushd表示进栈,popd表示出栈。只不过pushd和popd语句的操作对象是本地目录的路径。popd将目录C:\FTP出栈后执行goto语句跳转至start即主体代码段。这些语句在各个操作代码段相似,只是在获取文件操作代码段中多了start语句,start C:\FTP表示用文件资源管理器打开C:\FTP的目录。这样方便用户打开获取文件后文件所在的目录。

        接下来我讲一下每个操作代码段的算法思路。

        查看主目录操作:获取用户输入的服务器地址,用户名,密码。更改本地目录为C:\FTP。dir遍历服务器主目录。quit退出ftp命令并将可执行ftp命令写入到C:\FTP中的1.tmp。

        获取文件操作:获取用户输入的服务器地址,用户名,密码,要获取的文件名down(注意:如果文件在多级目录后一定要把文件名连带对应在服务器中的路径名输入到命令窗口,例如:test\input\pi.txt)。调用handle函数参数为:\%down%,%~p1修定符分离用户输入变量down值中的路径。%~nx1修定符分离用户输入变量down值中的文件名及其后缀名。更改本地目录为C:\FTP。cd命令跳转目录至用户输入的文件所在服务器中的路径名。mget获取用户输入的带有后缀名的文件并模拟输入y表示确认操作。quit退出ftp命令并将可执行ftp命令写入到C:\FTP中的2.tmp。有关批处理命令的修定符如下所示:

常见的批处理修定符

%~dy(y表示被调用参数

从左到右的顺序,从1开始)

显示路径里的驱动器号
%~y删除路径里的引号
%~fy完全显示路径名(类似于显示绝对路径)
%~py显示路径里的目录不显示文件名及其后缀名
%~ny显示路径里的文件名或目录名
%~xy显示路径里的文件后缀名
%~sy显示路径里的文件短名
%~ay显示路径里的文件属性
%~ty显示文件的日期和时间
%~zy显示文件的大小

        上传文件操作:获取用户输入的服务器地址,用户名,密码,要上传的文件名up(可以将文件拖拽至命令窗口),上传文件到服务器里面的路径des。调用handle函数,参数为:%up% \%des%(注意是两个参数)。%~pn2修定符分离用户输入变量des值中的目录名及路径名。%~pnx1修定符分离用户输入变量up值中的目录名,路径名及文件后缀名。更改本地目录为C:\FTP。cd命令跳转目录至用户输入的目录所在服务器中的路径名及目录名。mput上传用户输入的带有后缀名,文件名,路径名的文件并模拟输入y表示确认操作。quit退出ftp命令并将可执行ftp命令写入到C:\FTP中的3.tmp。

        删除文件操作:获取用户输入的服务器地址,用户名,密码,要删除文件所在服务器里的路径del_file。del删除服务器里用户指定的文件。quit退出ftp命令并将可执行ftp命令写入到C:\FTP中的4.tmp。

        创建目录操作:获取用户输入的服务器地址,用户名,密码,要创建的目录所在服务器里的路径make_file。mkdir创建目录。quit退出ftp命令并将可执行ftp命令写入到C:\FTP中的5.tmp。

        删除目录操作:获取用户输入的服务器地址,用户名,密码,要删除的目录所在服务器里的路径del_file。rmdir删除目录。quit退出ftp命令并将可执行ftp命令写入到C:\FTP中的6.tmp。

        打开目录操作:获取用户输入的服务器地址,用户名,密码,要打开的目录所在服务器里的路径open_file。cd跳转用户输入的目录。dir遍历目录里的文件。quit退出ftp命令并将可执行ftp命令写入到C:\FTP中的7.tmp。

        退出程序操作:删除本地目录C:\FTP里所有后缀名为tmp的文本文件,退出命令窗口。

        至此,所有有关这个程序脚本文件的编写思路已经讲完了。最后,感谢大家的耐心观看。

        

 

 

 

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荧光百叶草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值