极其简陋的对图像进行批处理

在用 openjpeg 对图像进行无损 JPEG2000 压缩的处理时,我有几百张图像要压缩,本来它的运行方式是在当前文件夹下输入 cmd,把要处理的图像名写上,和命名转换格式后的图像(opj_compress -i xx.bmp -o xx.j2k),就可以运行,咳咳说下这个如何弄吧,还是朋友告诉我才知道的,可能很多人知道,但不排除有些人不知道嘛。

极其简陋的对图像进行批处理_第1张图片

我就想,有那种批处理方法可以循环读取文件,执行同一个操作,于是就到处查命令行 /bat 文件批处理怎么用等各种关键词,没查到直接可以套用现成的语句,就看了下for命令的用法,写了极其简陋的一句,在 openjpeg 的执行文件下存为 .bat 文件:

for /r %%i in (??????.bmp) do opj_compress -i %%i -o %%i.j2k
pause

可以运行,就是新图像的名字是 ??????.bmp.j2k,很难看,不知道怎么改,也没有指定导出到哪个文件夹,因此就和被处理的图像放在一起,还得自己复制粘贴出来。所以若有同学看到,且刚好熟悉这一方面,还望赐教更加完善的命令( ̄▽ ̄)"

 

再讲一讲这句命令各段的含义吧:

/r :把 .bat 文件所在的  当前目录  和  此目录下的子目录 下所有符合括号里的文件找出来,供后面的命令执行。如果 /r 后面指定了了目录,例如 /r c:\,就找出C盘里所有符合的文件啦。所以我要处理的图片的文件夹也放在这儿了

(如果是 for /d ........则只在当前目录提取)

%%i:变量,找出的文件。

(??????.bmp): 要找的文件。几个问号,就代表几个关键字,由于我图像的命名是 000000.bmp,我就写了6个问号来匹配。当然可以用*.bmp,*代表任意多个字符,这里用了正则表达式的知识应该,但是我还没接触过。(想到以前做的数据库实验了,但是忘光光辽)

do:关键字,后面接要执行的命令

opj_compress -i %%i -o %%i.j2k:这句就是 openjpeg 软件本身的命令,要做的工作了。

对了有个重命名的关键词,不知道是不是因为我的图像是从 0 开始排序,而命令行序列不能从 0 开始递增,还是这句本身有问题,反正我批处理循环重新命名没成功,下面也贴一下:

for /l %%i in (1,1,100) do ren *.j2k  %%i.j2k
pause

原理就是 ren 关键词是重命名的,/l 是排序的,(1,1,100) 中,表示从 1 开始,以 1 为公差,递增100次。更详细的可以查查语法用法什么的。

你可能感兴趣的:(cmd)