크기가 .txt 파일로 인쇄된 폴더의 이미지를 가져오는 스크립트

크기가 .txt 파일로 인쇄된 폴더의 이미지를 가져오는 스크립트

제목에서 알 수 있듯이 "파일 이름" 및 "픽셀 치수"와 함께 폴더 내의 모든 이미지(JPG, PNG, GIF ecc)를 .txt 파일에 인쇄하는 Win 7용 스크립트가 있습니까? 명령줄에서
시도했지만 dir이름, 파일 크기 등만 나열됩니다.


ExifTool을 사용한 솔루션

가장 좋은 점은 .exe의 파일 이름에 명령이 이미 코딩되어 있어 원하는 곳 어디에서나 사용할 수 있는 드래그 앤 드롭 스크립트라는 것입니다!

업데이트
편의상 exe의 인라인 파일 이름을 다음과 같이 약간 수정했습니다.

ExifTool(-FileName -Imagesize -r -T -w+! %0finfo.txt -ext jpg --ext exe .).exe

이런 방법으로 .txt 출력을 이미지당 한 줄로 최소화하고( ) 하위 폴더도 처리할 수 있도록 -T재귀 옵션( )을 추가했습니다 .-r


ImageMagick을 사용한 솔루션

ImageMagick을 사용하여 솔루션 아래에 배치했는데 매우 빠르고 간단하지만 ofc에는 라이브러리가 설치되어 있어야 합니다.

답변1

사용ExifTool(이동식 실행 파일 이름이 다음으로 변경되었습니다.엑시프툴.exe):

exiftool -ImageSize -r .

여기이미지 크기관심이 있고 인쇄할 태그 이름입니다.이미지 너비 x 이미지 높이. 스위치 -r를 사용하면 하위 디렉터리의 파일을 재귀적으로 처리할 수 있습니다.

관습출력 문자열 형식마찬가지로 간단합니다. 예를 들어:

exiftool -p "Image Name: \"$FileName\"$/Image Size: $ImageSize$/" -r .

이 경우 태그 이름 앞에는 $가 붙습니다. $/개행 문자를 인쇄합니다.

참고: 위의 명령은 명령 프롬프트에 입력해야 합니다. 출력을 텍스트 파일로 리디렉션하려면 > Details.txt해당 파일에 추가하면 됩니다.


단순히 프로그램을 실행하고 관련 이미지 세부정보가 포함된 텍스트 파일을 작성하게 하려면 다음을 수행하세요.실행 파일 이름 바꾸기다음과 같이:

ExifTool(-FileName -Imagesize -w+! %0fDetails.txt -ext gif --ext exe .).exe

-w그러면 모든 콘솔 출력( )이 다음 이름의 파일에 기록됩니다 .세부정보.txt현재 디렉토리에 있습니다. 이 경우 출력은 현재 디렉터리에 있는 모든 GIF의 이미지 이름과 크기로 구성됩니다. 의 -w의미를 포함하여 매개변수 에 대한 자세한 내용은 위 의 문서 링크에서 확인할 수 있습니다.+!%0f

당신은 할 수 있습니다포함하다더 많은 확장자를 사용하여 처리 -ext jpg -ext png하거나 -ext gif완전히 삭제하여 지원되는 모든 파일 형식(원하지 않을 수 있는 이미지가 아닌 파일 포함)을 읽을 수 있도록 합니다.

--ext exe에 사용된다들어오지 못하게 하다모든 EXE(프로그램 자체 실행 파일이 보고서에 포함되지 않도록)

-r물론 재귀 처리를 활성화하기 위해 추가할 수도 있습니다.

있다많이이 프로그램이 엄청나게 강력하다는 점을 고려하면 이 프로그램으로 더 많은 일을 할 수 있습니다(그리고 전체 Perl 소스를 무료로 사용할 수 있다는 점을 고려하면 확장도 가능합니다)!

답변2

좋아, 해결책이미지매직, 간단하고 빠릅니다(그러나 ofc에는 라이브러리가 필요함).

관심 있는 폴더에서 cmd 줄을 열고( Shift+ RightClick폴더 창 내부에서 "여기에서 명령 창 열기"를 선택) cmd 프롬프트에서 다음을 사용하세요.

identify -format "%f %wx%h\r" *.jpg > info.txt

를 호출하고 " WIDTHxHEIGHT"와 같은 형식으로 지정 됩니다 %f filename.%w width%h height

자세한 내용은 여기를 참조하세요http://www.imagemagick.org/script/escape.php

답변3

거기에는파워셸 스크립트아래에서는 그렇게 해야 합니다. 목록과 출력에 대한 디렉터리를 변경하면 됩니다. Windows 8.1 및 Windows PowerShellISE에서 테스트했습니다.

param( $folder = "E:\My Pictures", $outputFile = "E:\details.txt" )
$objShell = New-Object -ComObject Shell.Application
$fileList = @()
$attrList = @{}
$details = ( "Dimensions" )
$objFolder = $objShell.namespace($folder)
for ($attr = 0 ; $attr  -le 500; $attr++)
{
    $attrName = $objFolder.getDetailsOf($objFolder.items, $attr)
    if ( $attrName -and ( -not $attrList.Contains($attrName) ))
    {
        $attrList.add( $attrName, $attr )
    }
}
dir $folder -Recurse -Directory | ForEach-Object{
    $objFolder = $objShell.namespace($_.FullName)
    foreach($file in $objFolder.items())
    {
        foreach( $attr in $details)
        {
            $attrValue = $objFolder.getDetailsOf($file, $attrList[$attr])
            if ( $attrValue )
            {
                Add-Member -InputObject $file -MemberType NoteProperty -Name $("A_" + $attr) -value $attrValue
            }
        }
        $fileList += $file
        $fileList.Count
    }
}
$fileList | Export-Csv $outputFile -Delimiter ','
$fileList | Format-Table

관련 정보