直接重命名?
使用批处理可以批量重命名:
ren *.jpg *.png
但是jpg和png的编码格式是不同的,这样会导致图片无法正确识别。尽管有的查看器能够打开图片,但这也是查看器自动识别了底层二进制的格式。
Image magick 简介
imageMagick是一套功能强大、开源的图片命令行工具,可以用来读写、处理超过89种基本格式的图片文件,对于图片格式转换非常方便,只需要给定文件名即可:
比如把图片 a.jpg 转换成 a.png
magick.exe a.jpg a.png
注意需要把image magick添加到环境变量。
一个例子搞懂for文件循环
for 命令过于强大,参数非常多,但这里只用下面这个命令就能看懂:
for %i in (*.*) do echo %i
在一个有文件的文件夹内执行这条命令,可以看到当前文件夹下所有的文件、文件夹都被echo了出来,就这么简单。do后面跟的是另一个cmd命令,用前面的%i传递变量。(i可以随便起)
批处理循环
使用windows cmd的for命令可以完成循环操作,详见 微软文档
例如把当前文件夹下的 jfif 文件批量转换为jpg
for %i in (*.jfif) do magick "%i" "%~ni.jpg"
上面的 magick "%i" "%~ni.jpg" 是核心部分:
magick 调用命令
"%i" 表示前面声明的变量 i,这里代表每一个文件的文件名(含扩展名)。用双引号包围是为了防止出现空格。
"%~ni.jpg" 为变量扩展, %~n 表示仅保留文件名去除扩展名,这里后面加上.jpg就把扩展名改成了jpg。
变量扩充支持下面的类型:
变量扩充 | 作用 |
%~fI | 将 %I 扩充到一个完全合格的路径名 |
%~nI | 仅将 %I 扩充到一个文件名 |
%~xI | 仅将 %I 扩充到一个文件扩展名 |
%~nxI | 仅将 %I 扩充到一个文件名和扩展名 |
%~dpI | 仅将 %I 扩充到目录,以\结尾 |
执行后所有的jfif文件都转成jpg了,保存在当前目录下。