无法循环文件名中带有空格的文件、Windows 批处理文件和图像 magick

2024-04-06

我正在尝试循环一堆文件夹,创建子文件夹,然后循环文件,使用 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"

当存在时,引号不会造成任何伤害no空间,以便最佳实践习惯于始终引用路径或文件名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法循环文件名中带有空格的文件、Windows 批处理文件和图像 magick 的相关文章

随机推荐