有一串 URL 相近的图片,怎样自动全部下载下来呢。
下载图片,刚好我之前安装过 cURL, 可以直接使用它下载。然后用脚本写一个循环就好了。
不想用 Python, PHP, Java 这么重量级的语言,于是想到了 bat 批处理。
在这里记录一下 bat 的常用语法。
- 回显:
@echo off 表示命令不回显,因为默认每条命令都会在屏幕上显示的。@修饰的命令也不回显(即使 echo on)。
- 注释:
rem 注释内容 或 :: 注释内容
- 变量:
set var=value
- 输出:
echo 要输出的内容
- 循环:
for /l 可以设置数字循环,类似 for(int i;i 那种。不过 bat 里的变量、循环和 Java, C 等都不一样。详细搜一下“批处理 循环”就知道了。
- 延迟: 默认在复合语句里,变量会在一开始就替换,因此像 for, if 之类的符合语句中的变量通常不是你想的值。所以要设置
setlocal enabledelayedexpansion, 搭配感叹号使用。详见 http://www.cnblogs.com/ini_always/archive/2012/02/16/2355031.html
- 截取: 字符串截取语法:
%var:~start,end%
- 前导: 想要数字前导0怎么办。C, Java 可以使用格式化占位符
%02d 之类的, bat 中可没有。于是我们先在数字前加上一定量的0,然后从后往前数需要的位数,那么就是带0前导了。
- 跳转: 冒号设置标号。goto 跳转到标号。
下面是我写的实现批量下载图片的批处理。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
@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
|
Reader Echoes
2 comments