gpt4 book ai didi

batch-file - 批处理脚本拖放文件夹使用 ImageMagick 转换图像

转载 作者:行者123 更新时间:2023-12-04 21:37:49 27 4
gpt4 key购买 nike

首先,我尝试到处寻找,但没有成功。我没有经验,非常感谢任何帮助。我正在尝试编写一个脚本将文件夹拖到批处理文件中,然后使用 ImageMagick 将该文件夹中的所有图像转换为 jpg。我可以看到很可能在命令行上执行脚本,一切正常。但是拖动文件夹给我带来了问题。我可以将许多文件拖到脚本上并且它转换得很好:

convert %* %1.jpg

效果很好。我也可以拖动一个文件夹,它会转换里面的图像,但是重命名为文件夹的名称,上一级目录,如下所示:
@set SOURCE=%1
convert %SOURCE%\* %SOURCE%.jpg

我想我需要一个 for 循环对文件夹中的每个文件执行转换。但我遇到了问题。我不确定在哪里加上引号,使用什么变量,以及如何克服空格。我想象这样的事情......
for %%f in (%SOURCE%\*) do ( convert %%f "%SOURCE%\%%f.jpg" )

但是,是的,我不知所措。我正在尝试这个小项目,既是为了学习,也是为了帮助我父亲快速转换大量照片。

最佳答案

听起来 ImageMagick 可以接受多个输入参数和一个输出参数,但要一次使用一个文件来简化它,请尝试以下操作。您的循环看起来不错,但下面的 ~ 更改将处理引号。

您可能还想将 %%a* 匹配更改为特定文件,这样您就不会捕获现有的 jpg 或非图像文件,例如对于 (%%a*.png %%a*.gif) 中的 %%f 做...

最后,在两个转换行前添加一个“echo”,以便您可以进行测试运行。

@echo off

rem Loops through arguments. If a file converts it to a jpg. If a directory
rem converts files in that directory to jpgs. Assumes a program "convert".

set count=0
for %%a in (%*) do (
if exist %%a (
if exist %%a\ (
rem Directory, loop through contents
for %%f in (%%a\*) do (
convert "%%f" "%%~a\%%~nf.jpg"
set /a count+=1
)
) else (
rem File, just convert
convert "%%~a" "%%~na.jpg"
set /a count+=1
)
) else (
echo Skipping non-existent %%~a
)
)

echo Converted %count% files

pause

关于batch-file - 批处理脚本拖放文件夹使用 ImageMagick 转换图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10960165/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com