无法循环文件,文件名,windows批处理文件和图像magick中的空格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法循环文件,文件名,windows批处理文件和图像magick中的空格相关的知识,希望对你有一定的参考价值。
我正在尝试遍历一堆文件夹,创建子文件夹然后循环文件,使用imagemagick转换它们并将它们放入新的子文件夹并重命名它们。某些文件名称中包含空格并导致错误...如何解决此问题?
错误信息 :
convert: unable to open image 'photo': No such name or directory @error/blob.c/OpenBlob/3489. convert: no decode delegate for this image format '' @ error/constitute.c/ReadImage/554.**
文件夹结构看起来像这样......文件夹结构看起来像这样......
batch_file.bat
folder_a
...photo 1.jpg
...photo1.jpg
folder_b
...photo 1.jpg
...photo2.png
我希望它最终像这样
batch_file.bat
folder_a
...300
......1.webp
......1.jpg
......2.webp
......2.jpg
...600
......1.webp
......1.jpg
......2.webp
......2.jpg
...photo 1.jpg
...photoC.jpg
folder_b
...300
......1.webp
......1.jpg
......2.webp
......2.jpg
...600
......1.webp
......1.png
......2.webp
......2.png
...photo 1.jpg
...photoA.png
如果可能,我想将文件重命名为1.jpg,1.webp,2.jpg,2.webp等...
批处理文件看起来像这样......
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
%~d1
CD "%~p1"
SET FOLDERS=300 600
FOR /D %%r IN (*) DO (
CD %%r
ECHO In Folder: %%r
FOR %%f IN (%FOLDERS%) DO (
MD %%f
ECHO In Folder: %%f
PAUSE
FOR %%a IN (*.jpg, *.png) DO (
convert %%a -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB -resize %%f %%f\%%a
ECHO Converting File: %%a
mogrify -format webp %%f\%%a
PAUSE
)
)
CD ..
)
答案
要处理带空格的文件名,请引用它们。例如你的命令
convert %%a -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB -resize %%f %%f\%%a
应该改为
convert "%%a" -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB -resize "%%f" "%%f\%%a"
与mogrify
命令相同:
mogrify -format webp "%%f\%%a"
当没有空格时,引号不会造成任何伤害,因此最佳实践习惯于始终使用路径或文件名。
另一答案
感谢@Stephan和他的答案,我有空间和重命名工作。继承人的结果。
@echo off
%~d1
CD "%~p1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET FOLDERS=300 600
FOR /D %%r IN (*) DO (
CD %%r
ECHO In Folder: %%r
ECHO Checking for pngs
FOR %%a IN (*.png) DO (
ECHO Converting %%a to .jpg
mogrify -format jpg "%%a"
)
FOR %%f IN (%FOLDERS%) DO (
MD %%f
ECHO In Folder: %%r\%%f
SET counter=0
FOR %%a IN (*.jpg) DO (
SET /a counter+=1
ECHO Optimizing File: %%a : Into !counter!%%~xa
convert "%%a" -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB -resize "%%f" "%%f!counter!%%~xa"
ECHO Converting Optimized File: !counter!%%~xa into .webp
mogrify -format webp "%%f!counter!%%~xa"
)
)
CD ..
)
以上是关于无法循环文件,文件名,windows批处理文件和图像magick中的空格的主要内容,如果未能解决你的问题,请参考以下文章