3

ImageMagick を使用して写真のサムネイルを作成しています。

Windows OSを使用しています。

ソース ファイルは多数のサブ フォルダーに含まれています。

同じフォルダー構造を維持し、元のファイル名を変更しながら、別のドライブの保存先フォルダーに保存することにより、ソース ファイルのサムネイルを作成したいと考えています。

宛先ファイル名はソースと同じですが、1 文字が変更されています。

ソースの例:

c:\images\1\1L0000021.jpg
c:\images\1\1L000561.jpg
c:\images\2\234L0000032.jpg
c:\images\3\31214L000001.jpg

宛先ドライブへ:

d:\images\1\1M0000021.jpg
d:\images\1\1M000561.jpg
d:\images\2\234M0000032.jpg
d:\images\3\31214M000001.jpg

注: L から M に変更する必要があるのは 1 文字だけです。

ソース ファイル名のパターンは常に次のとおりです。*l*.jpg

画像処理を実行するために実行したいコマンドは次のとおりです。

convert -thumbnail 200x220^^ -gravity center -extent 200x200 -quality 80 c:\images\*.jpeg d:\images\output.jpeg

上記のコマンドは、ソース フォルダーから目的のサムネイルを作成し、宛先フォルダーに保存しますが、出力ファイル名が正しくなく、サブ フォルダーを走査しません。

質問:

1)各フォルダーとサブフォルダーをトラバースしてから、宛先ドライブのまったく同じ構造に出力する方法(フォルダーが存在しない場合は作成します)

2) 出力ファイル名を次のように変更する*l*.jpeg方法*m*.jpeg

4

3 に答える 3

3

アップデート

将来誰かに役立つ場合に備えて、これが私の最終的なコードです。

::You must first install ImageMagick

::This job converts large photos into 200x200 thumbnails and saves the new files to the specified destination.

@echo off 
setlocal enabledelayedexpansion

SET "@SOURCE=C:\Test\photos\"
SET "@DEST=C:\dest"

REM Replicate source folder structure to destination:

for /r %@SOURCE% %%D in (.) do (

    echo Creating folder: %@DEST%%%~pnxD
    @md "%@DEST%%%~pnxD"

)


REM Select images from source using wildcard:

for /r %@SOURCE% %%F in (*l*.jpeg) do (

    REM Modify file name (i'm replacing 'l' for 'm')  

    set "fname=%%~nF"
    set "fname=!fname:l=m!"


    REM Convert source image to thumbnail and save to destination:

    REM echo Source: %%F
    echo Saving: %@DEST%%%~pnxF

    @convert -thumbnail 200x220^^^^ -gravity center -extent 200x200 -quality 80 "%%F" "%@DEST%%%~pF!fname!%%~xF"

)
于 2013-07-23T15:08:09.393 に答える