제목에서 알 수 있듯이 "파일 이름" 및 "픽셀 치수"와 함께 폴더 내의 모든 이미지(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