分类
代码

bat 批处理 + curl 批量下载图片

有一串 URL 相近的图片,怎样自动全部下载下来呢。
下载图片,刚好我之前安装过 cURL, 可以直接使用它下载。然后用脚本写一个循环就好了。

不想用 Python, PHP, Java 这么重量级的语言,于是想到了 bat 批处理。
在这里记录一下 bat 的常用语法。

  1. 回显: @echo off 表示命令不回显,因为默认每条命令都会在屏幕上显示的。@修饰的命令也不回显(即使 echo on)。
  2. 注释: rem 注释内容 或 :: 注释内容
  3. 变量: set var=value
  4. 输出: echo 要输出的内容
  5. 循环: for /l 可以设置数字循环,类似 for(int i;i 那种。不过 bat 里的变量、循环和 Java, C 等都不一样。详细搜一下“批处理 循环”就知道了。
  6. 延迟: 默认在复合语句里,变量会在一开始就替换,因此像 for, if 之类的符合语句中的变量通常不是你想的值。所以要设置 setlocal enabledelayedexpansion, 搭配感叹号使用。详见 http://www.cnblogs.com/ini_always/archive/2012/02/16/2355031.html
  7. 截取: 字符串截取语法:%var:~start,end%
  8. 前导: 想要数字前导0怎么办。C, Java 可以使用格式化占位符 %02d 之类的, bat 中可没有。于是我们先在数字前加上一定量的0,然后从后往前数需要的位数,那么就是带0前导了。
  9. 跳转: 冒号设置标号。goto 跳转到标号。

下面是我写的实现批量下载图片的批处理。

@echo off
rem 这里是注释~
rem 调用curl下载图标

rem 设置变量延迟
rem http://www.cnblogs.com/ini_always/archive/2012/02/16/2355031.html
setlocal enabledelayedexpansion

set url=http://m.weathercn.com/images/small/day/Day
set n=00

echo 获取Day图标
set day=Day

:download
rem 数字循环:for /l in (start,step,end)
rem 字符串截取 %var:start,end%
for /l %%i in (0,1,33) do (
	set n=0%%i
	rem echo %url%!n:~-2!.png
	curl %url%!n:~-2!.png  > %day%!n:~-2!.png
)

rem if的用法 http://www.cnblogs.com/liuhy/p/3220397.html
if %day%==Night goto end

echo 获取Night图标

set url=http://m.weathercn.com/images/small/night/Night
set day=Night
goto download

:end

“bat 批处理 + curl 批量下载图片”上的2条回复

发表回复

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

[/鼓掌] [/难过] [/调皮] [/白眼] [/疑问] [/流泪] [/流汗] [/撇嘴] [/抠鼻] [/惊讶] [/微笑] [/得意] [/大兵] [/坏笑] [/呲牙] [/吓到] [/可爱] [/发怒] [/发呆] [/偷笑] [/亲亲]