Conforme o título, existe um script para o Win 7 imprimir em um arquivo .txt todas as imagens (JPG, PNG, GIF ecc) dentro de uma pasta junto com "nome do arquivo" e "dimensão de pixels"?
Eu tentei dir
na linha de comando, mas lista apenas o nome, tamanho do arquivo etc.
Solução com ExifTool
O melhor negócio, com o comando já codificado no nome do arquivo .exe é totalmente um script de arrastar e soltar para usar onde você quiser!
Atualizar
Por conveniência, modifiquei ligeiramente o nome do arquivo embutido do exe para este
ExifTool(-FileName -Imagesize -r -T -w+! %0finfo.txt -ext jpg --ext exe .).exe
Dessa forma reduzi ao mínimo a saída .txt para uma única linha por imagem ( -T
) e adicionei uma opção recursiva ( -r
) para que ele também possa processar subpastas.
Solução com ImageMagick
Coloquei abaixo minha solução com ImageMagick, é bem rápida e simples, mas requer a biblioteca instalada.
Responder1
UsandoFerramenta Exif(executável portátil renomeado paraexiftool.exe):
exiftool -ImageSize -r .
AquiTamanho da imagemé o nome da tag em que você está interessado e será impressoLargura da imagem x Altura da imagem. A -r
opção faz com que ele processe arquivos recursivamente em subdiretórios.
Personalizadoformato de string de saídaé simples também. Por exemplo:
exiftool -p "Image Name: \"$FileName\"$/Image Size: $ImageSize$/" -r .
Neste caso os nomes das tags são precedidos por $. $/
imprime uma nova linha.
Nota: Os comandos acima devem ser digitados no prompt de comando. Para redirecionar a saída para um arquivo de texto, você pode anexar > Details.txt
a eles.
Se você quiser simplesmente executar o programa e escrever um arquivo de texto com os detalhes relevantes da imagem, você poderenomeie o executáveldo seguinte modo:
ExifTool(-FileName -Imagesize -w+! %0fDetails.txt -ext gif --ext exe .).exe
Isto irá gravar toda a saída do console ( -w
) em um arquivo chamadoDetalhes.txtno diretório atual. Neste caso, a saída consistirá nos nomes e tamanhos das imagens de todos os GIFs no diretório atual. Mais detalhes sobre o -w
parâmetro, incluindo o significado de +
, !
estão %0f
disponíveis no link da documentação acima.
Você podeincluirmais extensões a serem processadas -ext jpg -ext png
e assim por diante, ou exclua -ext gif
completamente para que ele leia todos os tipos de arquivos suportados (incluindo não-imagens que você pode não querer).
--ext exe
é usado paraexcluirtodos os EXEs (para que o próprio executável do programa não seja incluído no relatório).
-r
é claro que pode ser adicionado para permitir o processamento recursivo.
Hágrande quantidademais você pode fazer com o programa, dado o quão ridiculamente poderoso ele é (e extensível também, visto que o código-fonte Perl completo está disponível gratuitamente)!
Responder2
Ok solução comImagemMagick, simples e rápido (mas ofc requer a biblioteca).
Abra a linha cmd na pasta de seu interesse ( Shift+ RightClickdentro da janela da pasta e selecione "Abrir janela de comando aqui") e, no prompt do cmd, use isto
identify -format "%f %wx%h\r" *.jpg > info.txt
Solicita %f filename
e formatado %w width
como %h height
"WIDTHxHEIGHT"
Mais informações aquihttp://www.imagemagick.org/script/escape.php
Responder3
Há umScript do PowerShellabaixo disso deve bastar; basta alterar os diretórios de lista e saída. Testei no Windows 8.1 e no 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