2017-10-04 12 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画像のセットをステッチしたいです。実際には、4つのイメージのセットをtempディレクトリにコピーして、上記のコマンドを実行しています。しかし、これは当然のことながら、画像のサイズが大きいほど効率的でも実用的でもありません。しかし、ディレクトリ全体で実行するには、ファイル名の 'abc'、 'defg'などの部分を変数に入れて(%vと呼ぶ)、次のように実行する必要があります:

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

ここで、ディレクトリ内のファイルを反復処理するには、FORコマンドがあります。しかし、私は4つのファイルからなるグループをどのように扱うか、そしてその作業をするためにファイル名の部分文字列を抽出して使用する方法は知られていません。

いくつかの助けていただければ幸いです。

+0

これはDOSに関するもので、Windowsのcmdではないと確信していますか? – Alejandro

+0

はい、明確にするために、私はWindows 7でこれを実行します。 – pipet

+0

[OK]を、私は自由に、その時に反映するために質問のタグを編集しました。 – Alejandro

答えて

0

それは次のようなものに見えるかもしれません - GO.BATとして保存:あなたはそれが何を好きならあなたが理由で、ECHOを削除します

@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 

をそれが何をするかを教えてくれる以外は何もしない瞬間です!

私は、ヘッダーの取得を避けるためにコマンドにDIR /Bを使用しています.をリストするので、各ファイル名の幹は4回ではなく1回だけ発生します。

便利なリファレンスhereがあります。

+0

ありがとう!ユニークなファイル名のリストを得るためにDIR/Bの部分を考えたことはありませんでしたか? – pipet

関連する問題