繁体   English   中英

使用bat和imagemagick镜像输出文件夹中的子目录

[英]Mirror sub-directories in output folder using bat and imagemagick

我的BAT文件当前扫描“ JPG”的所有子目录,并对其中找到的所有文件执行imagemagick,然后再将它们发送到“输出”:

for /r /d %%a in (JPG\*) do magick convert "%%~a\*.jpg" resize 500000@ -set filename:out %%t_%%wx%%h "output/%%[filename:out].jpg"

我希望能够在“输出”中镜像“ JPG”的文件夹结构,例如

JPG/dir1/*.jpg
JPF/dir2/*.jpg

output/dir1/*.jpg
output/dir2/*.jpg

我不确定该如何处理,希望能得到一些指导。

for /f "delims=" %%a in ('xcopy /L /S /Y "JPG\*" "output\" ^|findstr /v /e /L /i /c:" file(s)" ') do magick convert "%%~a" resize 500000@ -set filename:out %%t_%%wx%%h "output\%%~na.jpg"

这将生成一个列表( /L 从被复制的文件), jpg和其子目录( /S ) -的/Y跳过默认提示。 然后,该列表(的源文件)被分配给%%afor/f -的delims条款确保整个名称被分配,而不管通过定义定界符隔板被用作什么

请注意,我不熟悉magick的命令的复杂性- %%a应该提供完整的文件名; %%~na仅是名称部分(即没有路径和扩展名)

另外,Windows中的路径用反斜杠表示,而不是/ 由于/用于指示开关,因此转换不可靠。

[编辑:添加了findstr命令,以/i不区分大小写的方式消除了/e结尾于/L文字“ Space file(s)”的输出行]


进一步的想法:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "destdir=U:\destdir"
SET "destdir2=destdir"
for /f "delims=" %%a in ('xcopy /L /S /Y "JPG\*" "output\" ^|findstr /v /e /L /i /c:" file(s)" ') DO (
 ECHO magick convert "%%~a" resize 500000@ -set filename:out %%t_%%wx%%h "output\%%~na.jpg"
 SET "outdir=%%~a"
 SET "outdir=!outdir:\%%~nxa=!"
 SET "outdir=%destdir%!outdir:~3!"
 ECHO MD "!outdir!" 2>nul
 ECHO magick convert "%%~a" resize 500000@ -set filename:out %%t_%%wx%%h "!outdir!\%%~na.jpg"
 SET "outdir=%%~a"
 SET "outdir=!outdir:\%%~nxa=!"
 SET "outdir=%destdir2%!outdir:~3!"
 ECHO MD "!outdir!" 2>nul
 ECHO magick convert "%%~a" resize 500000@ -set filename:out %%t_%%wx%%h "!outdir!\%%~na.jpg"
 ECHO ==================
)

GOTO :EOF

我通常完全指定源目录和目标目录。

上面的代码应将文件放在源目录中,并根据所选的文件掩码为找到的每个文件生成三个单独的输出集。 所提出的命令仅被echo以允许适当选择期望的结果。

第一组使用原始代码-毫无意外。

第二和第三组建立一个名为outdir的变量,其中包含源文件名。 由于不允许使用元变量的子字符串,因此将该值传送到普通环境变量,并调用delayedexpansion来允许在代码块内操纵值。

首先,删除最后的反斜杠,名称和扩展名,并保留路径。 然后,删除前三个字符( JPG )并将其附加到destdirdestdir2的输出目录名,并创建目录。 2>nul禁止显示错误消息,例如目标目录已存在时。

然后我们执行magick

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM