有一串 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 跳转到标号。
下面是我写的实现批量下载图片的批处理。
@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
声明
- 本作品采用署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。除非特别注明, 霖博客文章均为原创。
- 转载请保留本文(《bat 批处理 + curl 批量下载图片》)链接地址: https://youthlin.com/?p=1288
- 订阅本站:https://youthlin.com/feed/
“bat 批处理 + curl 批量下载图片”上的2条回复
BAT这玩意有年头了吧,一直感觉挺神奇。
bat的异常退出让我非常头疼……