中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » p-ftpls.bat v1.0 [列出ftp所有文件以提供全下载]
« [1] [2] »
作者:
标题: p-ftpls.bat v1.0 [列出ftp所有文件以提供全下载] 上一主题 | 下一主题
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『楼 主』:  p-ftpls.bat v1.0 [列出ftp所有文件以提供全下载]

还要继续改进

需 sed 4.0.7x  wget 1.10.2 http://www.vkill.net/tools.html

p-ftpls.bat
@echo off
::说明:加-s参数时可批处理ftp.txt中所列的所有ftp服务器
title p-ftpls  v1.0  by:vkill
:conf
set "temp=test.tx"
set "ftps=ftp.txt"
:000
md "%temp%">nul 2>nul
PUSHD "%temp%"
del /q *.*>nul 2>nul

if "%~1*"=="-s*" (
if not exist "..\%ftps%" (echo 缺少文件%ftps%&pause>nul&exit)
for /f "tokens=1-4 delims=→" %%a in (..\%ftps%) do (
@call :start "%%a" "%%b" "%%c" "%%d" "%~1"
)
cls
findstr . xx.txt >nul &&(
echo 下列ftp登陆信息错误
type xx.txt
echo 任意键退出&pause>nul
)
) else (
@call :手动输入ftp信息
for /f "tokens=1-4 delims=→" %%a in (temp.txt) do (
@call :start "%%a" "%%b" "%%c" "%%d"
)
)

echo 完成

pause>nul
exit

:start
cls
echo 正在验证ftp://%~3:%~4@%~1:%~2/的登陆信息<nul
wget -q -t 3 -T 3 "ftp://%~3:%~4@%~1:%~2/" -O - >nul 2>nul &&(goto ok)

@call :ftp登陆 "%~1" "%~2" "%~3" "%~4" "."
set "ok=y"
findstr /i /B "220[^0-9]" ftp回执.txt>nul &&(findstr /i /B "230[^0-9]" ftp回执.txt>nul ||(
echo 用户名或密码错误
>>xx.txt echo %~1→%~2→%~3→%~4 的用户名或密码错误
set "ok=n"
)
)||(
echo 地址或端口错误
>>xx.txt echo %~1→%~2→%~3→%~4 的地址或端口错误
set "ok=n"
)

if "%ok%*"=="n*" (
echo ftp://%~3:%~4@%~1:%~2/的登陆信息不正确
if "%~5*"=="-s*" (
echo 2秒后自动开始下一个,错误最后自动显示
ping -n 3 127.1 >nul 2>nul
goto :eof
) else (
echo 任意键退出
pause>nul
exit
)
)


:ok
echo 生成ftp://%~3:%~4@%~1:%~2的文件列表→开始

>>a%temp% (echo /)

set n=0
:start_1
set/a n+=1
for /f "tokens=*" %%? in ('sed "/^$/d" a%temp%^|sed -n "%n%p"') do (
echo %%?|(findstr "\/$">nul&&(
echo 开始生成%%?目录
>>b%temp% (echo %%?→目录)
wget -q -O index.html -t 3 -T 3 "ftp://%~3:%~4@%~1:%~2%%?"
findstr . index.html >nul &&(
::&#32;替换为空格,#替换为%23
sed -r "/<a href=.*<\/a>/!d;s/.*\x22>([^<>]*)<\/a>.*/\1/;s/&#32;/ /g;s/#/\%%23/g" index.html|more>c%temp%
sed "/\/$/!d;s,^,%%?," c%temp%|more>>a%temp%
sed "/\/$/d" c%temp%|more>>b%temp%

)
)
)
goto start_1
)
cd.>%~1-%~2.txt
sed -e "/^$/d" -e "1i\ftp://%~3:%~4@%~1:%~2" b%temp%|more>..\%~1-%~2.txt
echo 生成ftp://%~3:%~4@%~1:%~2/的文件列表→完毕
goto :eof

::$$$$$$$$$$ call $$$$$$$$$$
:手动输入ftp信息
echo 小知识(9527提供):
echo 如FTP是匿名登录方式,USER为ANONYMOUS,密码为任一邮箱形式即可,例如PPP@163.COM
echo.
set "var=server;port;user;pass"
for %%? in (%var%) do (
set %%?=
set /p %%?= %%?:
)
>temp.txt echo %server%→%port%→%user%→%pass%
goto :eof

:ftp登陆
cd.>ftp.conf
cd.>ftp回执.txt
>>ftp.conf echo o %~1 %~2
>>ftp.conf echo user %~3
>>ftp.conf echo %~4
>>ftp.conf echo cd .
>>ftp.conf echo dir
>>ftp.conf echo quit
@ftp -n -s:ftp.conf|more>ftp回执.txt
cls
goto :eof
ftp.txt
;此文件为p-ftpls加-s参数时使用
;如FTP是匿名登录方式,USER为ANONYMOUS,密码为任一邮箱形式即可,例如[email]PPP@163.COM[/email]
;普通登陆例子127.0.0.1→21→admin→000
;匿名登陆例子127.0.0.1→21→ANONYMOUS→[email]PPP@163.COM[/email]
;下面继续添加
;server→port→user→pass
127.0.0.1→21→admin→000
[ Last edited by vkill on 2007-2-12 at 05:50 AM ]

   此帖被 +22 点积分      点击查看详情   
评分人:【 redtek 分数: +10  时间:2007-2-8 02:03
评分人:【 无奈何 分数: +12  时间:2007-2-8 02:49


2007-2-8 00:57
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

欢迎提出改进意见

思路:根据dir的回值来判断是目录还是文件,要是目录的话后面加上/,目录写到要继续处理的txt文件中,文件写到另一文件中,有相对目录,为的是以后批量下载提供方便


我测试用的这个
http://down.wglm.net/Software/catalog26/544.html

[ Last edited by vkill on 2007-2-12 at 05:51 AM ]

附件 1: p-ftpls v1.0(bate).rar (2007-2-8 00:57, 1.58 K, 下载附件所需积分 1 点 ,下载次数: 49)
附件 2: p-ftpls v1.0.rar (2007-2-12 05:51, 1.62 K, 下载附件所需积分 1 点 ,下载次数: 46)
2007-2-8 00:57
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

因各种ftp server的dir回值不一样,所以写出一个通用的还是有点困难的,希望大家贴几个不同ftp server dir的回值,以便写出一个通用的

2007-2-8 01:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  楼主没有说明这个脚本有何用途,希望能补上,最好能把帖子标题也修改一下。另外,如果能把代码部分用 [code] 和 [/code] 括起来就更好了。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-2-8 01:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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



  Quote:
Originally posted by namejm at 2007-2-8 01:33:
  楼主没有说明这个脚本有何用途,希望能补上,最好能把帖子标题也修改一下。另外,如果能把代码部分用
括起来就更好了。

呵呵,我用的是列表的形式,也不影响/?等变意的,标题改改

2007-2-8 01:43
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

列出文件来就可以用wget或ftp 批量全下载ftp上所有文件了

2007-2-8 01:45
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 7 楼』:  

看似有点意思呀

2007-2-8 01:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 8 楼』:  

^_^



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-2-8 01:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 9 楼』:  

欣赏~~



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-2-8 02:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qingfushuan
高级用户





积分 502
发帖 327
注册 2006-12-30
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by ccwan at 2007-2-7 12:59 PM:
沙[/col ...

还有地板嘛,实在不行就睡地下室嘛

2007-2-8 02:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 11 楼』:  

不错!
vkill 兄 这么快已经完成了,现试用再给意见。



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2007-2-8 02:54
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
vkill
金牌会员





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



  Quote:
Originally posted by 无奈何 at 2007-2-8 02:54:
不错!
vkill 兄 这么快已经完成了,现试用再给意见。

恩,不过还是那原因,每个ftp server的回值不一样,所以不好弄,我也想用wget ,可wget 和这个一样,在不同的ftp server上下载到的文件也不一样,所以决定用dir来实现,好象现在只对xp 自带的ftp server 和Serv-U ftpserver 有效

2007-2-8 02:58
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

自己建的ftp上完成的文本(部分),谁写个批量下载的,呵呵

我的想法是 三种下载方式: 1.ftp    2.wget     3.flashget

应该很简单的  

127.0.0.1-21.txt
ftp://admin:000@127.0.0.1:21/
→目录
cmd_.bat
mp.bat
qq登陆.bat
000/→目录  
ftp.txt
p-ftpls v1.0(bate).rar
p-ftpls.bat
sed 文章收集.txt
TP-LINK 技术服务-网络教室 教材/→目录  
TP-LINK 技术服务-网络教室 教材下载.bat
log.txt
目录.html
abc/→目录  
1P421BHM00091588.html
1PE2UE3T00091589.html
1msoffice.html
20RAI3CA00091589.html
FlashAS.html
dongbPhotoshopcs2.html
down.bat
fifphotoshop7.html
hachervip.html
jingying3d.html
jingyingcorel.html
jingyingflash.html
stLinuxstu.html
stdreamw.html
vc.html
webmediatech.html
z.txt
bat学习笔记/→目录  
256字节编程大赛作品(446个).rar
50道高级程序员基础知识测试题.doc
BAT加密工具.rar
BAT批处理实现登陆FTP.txt
CMD 下的双引号的替换.txt
CMD命令速查手册.htm
CN-DOS移动.cmd
DEBUG命令大全.txt
DOS 从入门到精通(洪恩教程).rar
DOS下的文本遍历和文件遍历代码 6个.txt
Do All in Cmd Shell .txt
ECHO命令的使用.txt
FINDSTR正则表达式的基本用法.txt
GNU utilities.txt
HTML标签的正则.txt
HTTP返回解码.txt
Net当脚本玩.txt
OK1.bat
SSH 客户端命令.txt
VBScript、JavaScript参考资料.rar
VBS脚本常用代码.txt
WIM WMIC开发技术资料.rar
Win2000XP中的命令行.txt
WinRAR命令行参数.txt
XP下VBS中调用对话框.txt
[超级技巧]畸形目录.txt
awk gawk文章收集.txt
base64.html
bat 判断输入是否为纯数字.txt
cmd下载脚本.txt
dos技巧100例.txt
dos建日期时间文件名.txt
dos实例手册.chm
dos实现在特定某天执行特定的程序.txt
flashget命令行方式添加下载任务.txt
grep find 命令.txt
grep命令介绍.txt
grep命令练习.txt
mplayer介绍.txt
nc.txt
ncftp.txt
net use错误.txt
powershell help_doc.rar
reg2bat.bat
sed 文章收集.txt
sed的一些特殊替换.txt
sed匹配汉字.txt
set中的位运算.txt
telnet 收发邮件 .txt
telnet看网页源代码.txt
url.txt
utf-8转换gb2312.txt
vbs的exe2swf.txt
vbs的htm2txt.txt
vbs是强大的——图片尺寸转换.txt
vbs下载.txt
vbs学习资料及代码编辑器.rar
wget 和curl 优缺点.txt
(已结,使用sed)批处理替换文本内容的难题.txt
从用户传入的参数中去掉引号.txt
倒记时.txt
方便的右键保存脚本.txt
高手必经之路.exe
几个查找文件方法.txt
检查本地磁盘并判断类型.bat
将文件的内容赋给一个环境变量.txt
脚本是好玩的——让XP语音阅读你的文本文件.txt
进度条.bat
经典的DOS命令.txt
利用vbs脚本发送一个回车.txt
命令行参数的防御错误.txt
命令行下网页转文本.txt
判断路径.txt
判断是否为纯中文字.txt
判断输入是否为ip地址.txt
批处理不在黑屏的vbs.txt
批处理处理浮点运算.bat
批处理发送ip到邮箱.txt
批处理发邮件.bat
批处理设置文件关联.txt
批处理实现网页下载.txt
批处理搜索提取二进制文件小记.txt
批处理延时方法小结.txt
批处理隐藏运行的10种思路.txt
批处理字符出现次数统计.txt
批量跑出程序的快捷方式.txt
批命令截取一个路径的前半部分.txt
去变量左右、首尾空格的方法.txt
让XP语音阅读你的文本文件.txt
如何从一文本的最后行向前读取所有行.txt
如何用批处理按标记分割文件.txt
如何在VBS脚本中显示“选择文件对话框”或“选择目录对话框”.txt
扫描的.bat
生成文本的反序.txt
实 数 加 减 运 算 脚 本.bat
实数除法计算.bat
手把手教你写批处理(willsort题注版).txt
提取文件的某一行.txt
文本的模式匹配问题(搜索特定的单词).txt
文本中提取指定的内容(位置会变动的).txt
文件备份器.txt
文件中替换.txt
文件中字符替换.bat
无奈何签名代码略析.txt
效对时间的批处理.bat
写入%var%到txt文件第一行的问题.txt
选择多文件并保存路径.bat
研究了下cmd.exe有很多新发现.txt
一些批处理技巧.txt
用SET命令逐个取字符串.txt
用bat把某网站的时间导入问题.txt
用cmd创建某个软件的快捷方式.txt
用脚本模拟黑客帝国数码雨.bat
用批处理查找符合时间范围的文件.txt
用批处理作趣味数学题(汇总).txt
友情提示CN-DOS.cmd
运行cmd类文件需要密码.txt
在 findstr 中使用正则表达式.txt
在已存在的文件加入指定的行.txt
正则表达式Regex文章收集.txt
正则表达式之道.txt
重启IIS命令行详介.txt
啄字读取文件.txt
http学习笔记/→目录  
VBScript、JavaScript参考资料.rar
服务器 相关服务 改手动.bat
help.html
iis6 + php-4.4.2.txt
iis6 + php-5.1.4 + mysql5.0.22.txt
iis6 + php-5.1.4.txt
mysql5.0.22访问默认data文件夹之外的数据库.txt
php.txt
phpmyadmin2.8.2安装配置.txt
start Helix Server.bat
start MySQL.bat
start apache2.2.bat
start iisadmin.bat
stop Helix Server.bat
stop MySQL.bat
stop apache2.2.bat
stop iisadmin.bat
test.bat
+ apache2.2.2.txt
tools生成/→目录  
tools.html
例子_readme.txt
生成.bat
wlan/→目录  
Aruba 200移动控制器.pdf
Aruba 2400移动控制器.pdf
Aruba 5000移动控制器.pdf
Aruba 6000移动控制器.pdf
Aruba 800移动控制器.pdf
ArubaOS VPN服务器模块.pdf
ArubaOS xSex模块.pdf
ArubaOS策略执行防火墙模块.pdf
ArubaOS高级AAA模块.pdf
ArubaOS客户机完整性模块.pdf
ArubaOS网络外部服务接口模块.pdf
ArubaOS网络远程软件模块.pdf
ArubaOS无线入侵防护模块.pdf
Aruba成功案例.rar
Aruba技术白皮书.rar
Aruba接入点2e.pdf
Aruba接入点41.pdf
Aruba接入点60&61.pdf
Aruba接入点65.pdf
Aruba接入点70.pdf
Aruba接入点80m.pdf
Aruba接入点80mb&sb.pdf
China AP61 1.pdf
China AP61 2.pdf
wlan图纸.bmp
wwwroot/→目录  
a.rm
blog.zip
index.asp
index.aspx
index.html
index.php
000/test.tx/→目录  
atest.tx
btest.tx
ftp.conf
ftp回执.txt
temp.txt


2007-2-8 03:09
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 14 楼』:  

RE vkill
兄提及的 “wget 在不同的ftp server上下载到的文件也不一样” ,是什么意思?能否具体一点。



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2007-2-8 03:21
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
vkill
金牌会员





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



  Quote:
Originally posted by 无奈何 at 2007-2-8 03:21:
RE vkill
兄提及的 “wget 在不同的ftp server上下载到的文件也不一样” ,是什么意思?能否具体一点。

wget -O index.html "ftp://user:pass@server:port/"

就这样下,下载到的都不一样

2007-2-8 03:22
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: