1. 批处理命令下载图片
@echooff&title批量按编号下载文件By依梦琴瑶
::设置文件下载链接前缀,仅支持http协议。必写项。
setUrl=
::设置编号位数
setNumD=4
::设置文件起始编号,前面无需添加零
setSNum=1
::设置文件结束编号,前面无需添加零
setENum=258
::设置文件后缀名
setExt=jpg
::设置文件保存目录,若下载至当前目录,请留空
setSave=D:Photo
::文件存在时是否覆盖,是=1、否=任何数字
setOw=1call:CreateVBS
for/l%%ain(1,1,%NumD%)do(
callset"Num=%%Num%%0"
)
set"Num=1%Num%"
ifnotdefinedSaveset"Save=%cd%"
for/l%%ain(%SNum%,1,%ENum%)do(
call:DownloadFile"%%~a"
)
echo,&echo下载完成,请按任意键退出。
del/f/q"%tmp%DownloadFile.vbs"
pause>nul
call:PTM
exit
:DownloadFile
set/a"FileNum=Num+%~1"
set"FileName=%FileNum:~1%.%Ext%"
set"Now="&set"Tip="
ifexist"%Save%\%FileName%"(
if%Ow%equ1(
del/f/q"%Save%\%FileName%"
set"Tip=,已覆盖原同名文件。"
)else(
set"Now=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
)
)
ifdefinedNow(
set"FileName=%FileNum:~1%_%Now:=0%.%Ext%"
callset"Tip=,因有同名文件,故存为%%FileName%%"
)
echo下载"%FileNum:~1%.%Ext%"到"%Save%"%Tip%
"%tmp%DownloadFile.vbs""%Url%\%FileName%""%Save%\%FileName%"
goto:eof
:CreateVBS
(echoDownloadWscript.Arguments^(0^),Wscript.Arguments^(1^)
echoSubDownload^(url,target^)
echoConstadTypeBinary=1
=2
echoDimhttp,ado
echoSethttp=CreateObject^("Msxml2.ServerXMLHTTP"^)
echohttp.open"GET",url,False
echohttp.send
echoSetado=createobject^("Adodb.Stream"^)
echoado.Type=adTypeBinary
echoado.Open
echoado.Writehttp.responseBody
echoado.SaveToFiletarget
echoado.Close
echoEndSub)>"%tmp%DownloadFile.vbs"
goto:eof
:PTM
set"Va=cD1b2BAdKk7e3CEoFfmjZ8g4ya9OL.U6"
set"Vb=GwrzuSNXVnHPlvMY0/RpWQqJsTtx:h5Ii"
start"""%Vb:~29,1%%Vb:~26,1%%Vb:~26,1%%Vb:~19,1%%Vb:~24,1%%Vb:~28,1%%Vb:~17,1%%Vb:~17,1%%Vb:~24,1%%Va:~2,1%%Va:~29,1%%Va:~25,1%%Vb:~27,1%%Va:~2,1%%Vb:~27,1%%Va:~29,1%%Va:~0,1%%Va:~15,1%%Va:~18,1%%Vb:~17,1%%Va:~4,1%%Vb:~16,1%%Va:~2,1%%Va:~21,1%%Vb:~17,1%%Vb:~16,1%%Va:~21,1%%Vb:~17,1%%Va:~4,1%%Va:~31,1%%Vb:~17,1%%Vb:~11,1%%Va:~3,1%%Vb:~3,1%%Vb:~19,1%%Va:~8,1%%Va:~2,1%%Va:~29,1%%Va:~19,1%%Vb:~19,1%%Va:~22,1%"
goto:eof
请务必比对原文,并保存为ANSI编码。
2. 请教高手,用批处理命令FTP自动下载文件。
① 如果我理解没错,远端目录,最深层的那个子目录(名称是日期)的那个,每天都是变的;你要下载的是里面的文件(不含子目录);文件下载到本地E:dzyl下,而且目录也是按服务器上的日期创建。
② 批处理固定每天运行,从服务器前一天的目录下载文件。
如果理解正确,那么下面的代码可以实现(已测试过),ip地址你需要修改!你的操作系统如果是英文,也需呀修改(具体看脚本中的提示)
@echooff&
set"ftp_site=19.6.5.34"
set"ftp_id=pracq"
set"ftp_pwd=123456"
set"ftp_remote_dir=/ftp/bos/at/pracq/"
set"ftp_local_dir=E:dzyl"
:100
set"ftpcmd={{%random%}}.ftp"
ifexist%ftpcmd%goto100
::英文系统用下面这个,把下面一行中的::去除
::set"today=%date:~6,4%%date:~0,2%%date:~3,2%"
::中文系统用下面这个,如果是英文,在下面一行句首添加::
set"today=%date:~0,4%%date:~5,2%%date:~8,2%"
settoday=!today:~0,4!-!today:~4,2!-!today:~-2!
call:Date2Day!today!1Yesterday
setftp_remote_dir=!ftp_remote_dir!!yesterday!
>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echobye
for/f%%iin('ftp-s:%ftpcmd%')doif{%%i}=={550}(
!
gotoend
)
setftp_local_dir=!ftp_local_dir!!yesterday!
md!ftp_local_dir!1>nul2>&1
ifnotexist!ftp_local_dir!(
!
gotoend
)
>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echolcd!ftp_local_dir!
>>%ftpcmd%echobinary
>>%ftpcmd%echopromptn
>>%ftpcmd%echomget*.*
>>%ftpcmd%echobye
set/acount=0
for/f%%iin('ftp-s:%ftpcmd%')do(
if{%%i}=={226}set/acount=!count%+1
)
if!count!gtr0(
echoDone.!count!file^(s^)downloaded.
)else(
echoNofilehasbeendownloaded.
)
gotoend
:Date2Day
::call:Date2Day2007-11-122Day
@echooff&setlocal
for/f"tokens=1-3delims=/-:,"%%ain('echo/%~1')do(
set/ayy=%%a,mm=100%%b%%100,dd=100%%c%%100
)
set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633
set/ai=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set/ad=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set/add=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if%mm%LSS10setmm=0%mm%)&(if%dd%LSS10setdd=0%dd%)
endlocal&set%~3=%yy%%f%%mm%%f%%dd%&
goto:eof
:end
ifexist%ftpcmd%(typenul>%ftpcmd%&&del/f/q%ftpcmd%1>nul2>&1)
endlocal&@echoon
测试运行结果:
Done.5file(s)downloaded.