代码之家  ›  专栏  ›  技术社区  ›  pipet

将ImageMagick蒙太奇与文件名子字符串变量一起使用

  •  1
  • pipet  · 技术社区  · 7 年前

    我有一个包含如下图像文件的目录:

    abc_B.jpg
    abc_G.jpg
    abc_R.jpg
    abc_RGB.jpg
    defg_B.jpg
    defg_G.jpg
    defg_R.jpg
    defg_RGB.jpg
    etc...
    

    montage *_B.jpg *_G.jpg *_R.jpg *_RGB.jpg [some arguments] montage.jpg 
    

    事实上,我一直在将四个图像集复制到一个临时目录中,并运行上述命令。但是,对于较大的图像集,这当然不是非常有效或实用。但要在整个目录中运行它,需要有一种方法来获取文件名的“abc”、“defg”等部分,并将其放入一个变量(我们称其为%v)中,然后运行如下操作:

    montage %v_B.jpg %v_G.jpg %v_R.jpg %v_RGB.jpg [some arguments] %v_montage.jpg 
    

    现在,要迭代目录中的文件,有FOR命令。但我不知道如何处理由四个文件组成的组,以及如何提取和使用文件名子字符串来实现这一点。

    非常感谢您的帮助。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mark Setchell    7 年前

    它可能看起来像这样-随用随储。BAT:

    @ECHO OFF
    FOR /F "delims=_" %%G IN ('DIR /B *_R.JPG') DO (
        ECHO MONTAGE %%G_R.JPG %%G_G.JPG %%G_B.JPG %%G_RGB.JPG ... montage_%%G.JPG
    )
    

    MONTAGE abc_R.JPG abc_G.JPG abc_B.JPG abc_RGB.JPG ... montage_abc.JPG
    MONTAGE defg_R.JPG defg_G.JPG defg_B.JPG defg_RGB.JPG ... montage_defg.JPG
    

    您将删除 ECHO 如果你喜欢它的功能,因为目前它除了告诉你它会做什么之外什么都不做!

    DIR /B 在命令中避免获取标题,我只列出 *_R.JPG 因此,每个文件名干只出现一次,而不是四次。

    有一个方便的参考资料 here