2017-10-04 47 views
1

我只有非常基本的編程和命令行技能,因此我有點被下面的難住。使用ImageMagick蒙太奇與文件名子字符串變量

我有這樣的圖像文件的目錄:

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... 

欲縫合在一起集使用ImageMagick 4個R,G,B,和RGB圖像。對於個人圖像集,這是非常簡單的:

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命令。但我不知道如何處理與四個文件組以及如何提取和使用文件名子字符串來完成這項工作。

一些幫助將不勝感激。

+0

你確定這是關於DOS而不是Windows cmd嗎? – Alejandro

+0

是的,爲了澄清,我在Windows 7上運行了這個。 – pipet

+0

好的,我冒昧地編輯了問題中的標記以反映此問題。 – Alejandro

回答

0

它可能是這個樣子 - 它存儲爲GO.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

+0

非常感謝!從未想過DIR/B部分獲取唯一文件名的列表。 – pipet