还要继续改进
需 sed 4.0.7x wget 1.10.2 http://www.vkill.net/tools.html
p-ftpls.bat
ftp.txt
[ Last edited by vkill on 2007-2-12 at 05:50 AM ]
需 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" ftp回执.txt>nul &&(findstr /i /B "230" 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 &&(
:: 替换为空格,#替换为%23
sed -r "/<a href=.*<\/a>/!d;s/.*\x22>(*)<\/a>.*/\1/;s/ / /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,密码为任一邮箱形式即可,例如PPP@163.COM
;普通登陆例子127.0.0.1→21→admin→000
;匿名登陆例子127.0.0.1→21→ANONYMOUS→PPP@163.COM
;下面继续添加
;server→port→user→pass
127.0.0.1→21→admin→000[ Last edited by vkill on 2007-2-12 at 05:50 AM ]
