利用bat实现批量ftp上传与下载的示例

工作中需要获取好多文件,而且各站用户名和密码都是不一样的,如果一个一个登陆这就比较蛋疼了。好在要获取的文件路径和文件有规律,于是就想把用户名与密码放在一个文本文件里作为配置文件来获取。下面是代码,有点长,逻辑理清了还是很好看的。根据自己需要修改代码吧。

@echo off 
setlocal enableextensions

echo.
echo 请选择下载或上传文件:1.下载  2.上传
echo.

set /p c=请输入1或2:
if "%c%"=="1" goto :down
if "%c%"=="2" goto :up

:down
if exist downlog.txt (del downlog.txt)
echo.
echo 开始下载,日志保存为downlog.txt,文件较多,请稍候...

::读取同目录下a.txt每行的的2,3列(以空格分隔)的数据为参数传给%%i,%%j
for /f "tokens=2,3 delims= " %%i in (a.txt) do (
echo.
echo 正在下载%%i的文件
echo.
call :download %%i %%j
)>>downlog.txt
echo.
echo 下载完成!
echo.
pause
goto :eof

:up
if exist uplog.txt (del uplog.txt)
echo.
echo 开始上传,日志保存为uplog.txt,文件较多,请稍候...
for /f "tokens=2,3 delims= " %%i in (a.txt) do (
echo.
echo 正在上传%%i的文件
echo.
call :upload %%i %%j
)>>uplog.txt
echo.
echo 上传完成!
echo.
pause
goto :eof

:download

::参数传递,call :download 传过来也就是%1=%%i,%2=%%j

mkdir %1
set ftpfilename=autoftp.cfg 
::以下是写入ftp命令
echo open 116.255.235.37 >"%ftpfilename%" 
(echo %1>>"%ftpfilename%")
(echo %2>>"%ftpfilename%")
echo bin >>"%ftpfilename%" 
echo cd wwwroot >>"%ftpfilename%" 
echo lcd %1>>"%ftpfilename%" 
echo get index.html >>"%ftpfilename%" 
echo get default.html >>"%ftpfilename%" 
echo bye >>"%ftpfilename%"
::执行ftp命令 
ftp -s:"%ftpfilename%" 
del "%ftpfilename%"
ping -n 1 127.0.0.1>nul
goto :eof

:upload

set ftpfilename=autoftp.cfg 
echo open 116.255.235.37 >"%ftpfilename%" 
(echo %1>>"%ftpfilename%")
(echo %2>>"%ftpfilename%")
echo bin >>"%ftpfilename%" 
echo cd wwwroot >>"%ftpfilename%" 
echo lcd %1>>"%ftpfilename%" 
echo put index.html>>"%ftpfilename%" 
echo put default.html>>"%ftpfilename%"
echo bye >>"%ftpfilename%" 
ftp -s:"%ftpfilename%" 
del "%ftpfilename%"
ping -n 1 127.0.0.1>nul
goto :eof

不明白的留言交流哟~

转载请注明出处与链接,如有其他疑问或交流,请加QQ交流群或关注公众号加我微信

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注