2014-12-17 12 views
1

내부에 하위 디렉토리 및 이미지 파일이있는 파일 구조가 있습니다. GraphicsMagick을 사용하여 이미지 파일을 다른 형식으로 변환하고 크기를 작게 만듭니다. 다음과 같은 간단한 명령으로이 작업을 수행 할 수 있습니다.하위 폴더를 모그먼트 화하고 원본 디렉토리 구조 유지

하위 디렉토리 구조를 보존하려고하면 작업이 복잡해집니다. Mogrify에는이 옵션이 없으므로 모든 디렉토리를 검사하기 위해 쉘 스크립트를 작성해야합니다 (그리고 새 디렉토리를 작성할 수도 있습니다).

어떻게해야합니까?

+0

우리들 대부분은 GraphicsMagics에 액세스 할 수없는, 그래서 우리는 단지 당신이 폴더 구조에 관한 언급하는 것을 추측 남아 있습니다. 'before'구조와 'after'결과의 예를 제공 할 수 있다면 누군가 도울 수 있습니다. – RGuggisberg

+0

나는 GraphicsMagick을 의미했다. GraphicsMagick 내부에 mogrify 명령을 사용하면 한 폴더 내의 파일을 다른 폴더로 변환 할 수 있습니다. 하지만 하위 폴더 구조를 유지하면서 비슷한 작업을 수행 할 수는 없습니다. – dandaka

+0

http://www.imagemagick.org/discourse-server/viewtopic.php?t=25862에있는 재귀에 대한 링크를 참조하십시오. – Nemo

답변

0

Windows OS가 batch-file이라는 질문으로 가정합니다. 대상 하나소스 폴더의 모든 서브 폴더 구조를 복사 robocopy을 사용하여 우선

. 그런 다음 소스 폴더로 반복하고 하위 폴더를 반복하고 전체 소스 및 대상 (하위) 경로를 가져 와서 에코합니다.

nonexistingfilename이 (^Nul로 대체 될 수 있습니다) 그건
@ECHO OFF >NUL 
@SETLOCAL enableextensions enabledelayedexpansion 
set "source=content" 
set "target=img-converted" 
robocopy %source% %target% nonexistingfilename /E 
FOR /R "content" %%G in (.) DO (
    set "sourcefldr=%%~dpnxG" 
    set "targetfldr=!sourcefldr:%source%=%target%!" 
    @echo !sourcefldr! !targetfldr! 
    if EXIST "!sourcefldr!\*.jpg" (
    @echo mogrify -path !targetfldr! -format jpg !sourcefldr!\*.jpg 
    rem surround pathnames with double quotes if necessary as follows 
    rem mogrify -path "!targetfldr!" -format jpg "!sourcefldr!\*.jpg" 
) 
) 
@ENDLOCAL 
@goto :eof 

명령

robocopy %source% %target% nonexistingfilename /E

에 ... 내 (잘못)을 이해하는 측면에서 공식화 때문에 @echo mogrify ...를 사용 mogrify에서와 마찬가지로 확실하지 보장 폴더 구조 에만, 파일이 없습니다. 뿐만 아니라 모든 *.jpg 복사됩니다 대신 *.jpg 사용 :

robocopy %source% %target% *.jpg /E

+0

OSX를 사용하고 있지만 아이디어가 완벽하게 잘 보인다! 먼저 모든 파일을 복사하고 사용 후 크기를 변경합니다. 그것은 나를 위해 일할 것이다, 고마워! – dandaka