タイトルの通り、フォルダー内のすべての画像 (JPG、PNG、GIF など) を「ファイル名」と「ピクセル寸法」とともに .txt ファイルに印刷する Win 7 用のスクリプトはありますか?コマンド ライン
で試してみましたがdir
、名前、ファイル サイズなどしかリストされませんでした。
ExifToolによる解決策
これは最高の取引だと思います。.exe のファイル名にコマンドがすでにコード化されているので、どこでも使用できるドラッグ アンド ドロップ スクリプトです。
アップデート
便宜上、exeのインラインファイル名を次のように少し変更しました。
ExifTool(-FileName -Imagesize -r -T -w+! %0finfo.txt -ext jpg --ext exe .).exe
この方法では、.txt 出力を画像ごとに 1 行に最小限に抑え ( -T
)、再帰オプション ( -r
) を追加してサブフォルダーも処理できるようにしました。
ImageMagickによるソリューション
以下に、ImageMagick を使用したソリューションを掲載しました。これは非常に迅速かつシンプルですが、もちろんライブラリがインストールされている必要があります。
答え1
使用Exifツール(ポータブル実行可能ファイルが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
OKの解決策イメージマジックシンプルで迅速です(ただし、もちろんライブラリが必要です)。
興味のあるフォルダでコマンド行を開き(フォルダウィンドウ内でShift+ を押して「ここでコマンドウィンドウを開く」を選択)、コマンドプロンプトでこれを使用します。RightClick
identify -format "%f %wx%h\r" *.jpg > info.txt
を呼び出し%f filename
、"WIDTHxHEIGHT" のようにフォーマットします%w width
。%h height
答え3
そこにはPowerShell スクリプト以下のようにすれば、リストと出力のディレクトリを変更するだけで済みます。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