用bat怎样批量提取图片的分辨率或像素大小、文件大小,大神们帮帮忙,谢谢了。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用bat怎样批量提取图片的分辨率或像素大小、文件大小,大神们帮帮忙,谢谢了。相关的知识,希望对你有一定的参考价值。
用bat批量提取图片的分辨率或像素大小的方法中,有没有办法:1)添加文件的大小;2)导出为excel??
最好可以获取文件夹中文件的文件的列表、分辨率、文件大小。
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行
<# :cls
@echo off
rem 提取图片的文件大小、宽高尺寸和分辨率
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$path=$args[0];
$outfile='.\\info.csv';
$ext=@('.jpg', '.jpeg', '.bmp', '.png', '.gif');
function formatsize($n)
$m='';
if($n -ge 1073741824)
$m=($n/1073741824).toString('0.00')+' GB';
else
if($n -ge 1048576)
$m=($n/1048576).toString('0.00')+' MB';
else
if($n -ge 1024)
$m=($n/1024).toString('0.00')+' KB';
else
$m=$n.toString()+' B';
;
;
;
return $m;
;
$outfile=$outfile -replace '^\\.',$path.trimend('\\');
[System.Collections.ArrayList]$s=@();
Add-Type -AssemblyName 'System.Drawing';
$files=@(dir -liter $path|?($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo]));
for($i=0;$i -lt $files.length;$i++)
$img=[System.Drawing.Image]::FromFile($files[$i].FullName);
$line='"'+$files[$i].Name+'",'+(formatsize $files[$i].length)+',';
$line+=$img.Width.toString()+'x'+$img.Height.toString()+','+$img.HorizontalResolution.toString();
[void]$s.add($line);
write-host $line;
$img.Dispose();
;
[IO.File]::WriteAllLines($outfile, $s, [Text.Encoding]::Default); 参考技术A
是有软件可以直接输出的,添加文件大小支持上百Mb
用软件批量获取图片信息windows系统版本
第一步、导入图片
第二步、勾选要提取的信息
第三步、一键提取
第四步、导出表格
提取包含(分辨率、高度、宽度、尺寸、大小)根据要的提取就好了
用bat怎样批量提取文件夹及子文件夹下面图片?
1.复制所在父级+子级的文件夹结构(子级下的文件夹不需要),并且把复制的父级名字后加“_A+”,子级文件夹名字和复制的一样;2.把子级下名字为“A+”文件夹里的JPG图片复制到新建的对应子级的文件夹里;
批量导入图片已经是非常普遍的功能了。不论图片名称是否有规律或者是否有在数据库中保存,经过一些专业的设置都可以实现批量导入纸张及布局设置暂且默认A4以及5行2列。然后点击左侧工具栏中“插入位图图片”的图标,先绘制图片样式:
二、添加可变图片 添加不同文件夹中的图片分为两个部分,第一个是先添加文件夹路径及名称,第二部分为添加图片的路径、名称及后缀名:
1、双击图片,打开其数据源窗口,点击左侧“+”,在手动输入窗口下方点击坐下浏览,根据路径选择对应的图片添加,保留图片路径的文件夹名称的固定部分,将后续可变内容及图片名称删除:
再次点击左侧“+”使用“序列生成+补齐”的方法添加文件夹名称中的序列号:
2、添加图片路径、名称及后缀名 点击左侧“+”,使用“手动输入”的方法,添加图片路径及图片名称的固定部分并点击添加;
下面可使用“序列生成+补齐”添加图片名称中的可变部分“001、002、003......”,可变内容添加后,可再次点击左侧“+”,使用手动输入添加图片后缀名,然后点击“确定”即可:
数据源内容添加完毕并确定后,就可以在画布上看到导入的图片样式了。然后点击上方工具栏中的打印预览就可以看到批量导入的不同文件夹中的图片效果了。文中开始位置有三个文件夹,每个文件夹中有一个图片,从下图可以看到已经全部自动导入了:
参考技术A 不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行<# :
cls&echo off&mode con lines=5000
rem 从当前目录下的多个文件夹里的子文件夹下查找并提取出一个指定名称文件夹里的图片文件
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$folders1=@(dir -liter $path|?(-not $_.Name.EndsWith("_A+")) -and ($_ -is [System.IO.DirectoryInfo]));
for($i=0;$i -lt $folders1.length;$i++)
$folders2=@(dir -liter $folders1[$i].FullName|?$_ -is [System.IO.DirectoryInfo]);
for($j=0;$j -lt $folders2.length;$j++)
$folders3=@(dir -liter $folders2[$j].FullName -recurse|?($_.Name -eq 'A+') -and ($_ -is [System.IO.DirectoryInfo]));
if($folders3.length -ge 1)
$files=@(dir -liter $folders3[0].FullName|?(@('.jpg','.jpeg','.bmp','.png') -contains $_.Extension) -and ($_ -is [System.IO.FileInfo]));
for($k=0;$k -lt $files.length;$k++)
$newfolder=$folders1[$i].FullName+'_A+\'+$folders2[$j].Name+$files[$k].Directory.FullName.substring($folders3[0].FullName.length);
if(-not (test-path -liter $newfolder))[void][IO.Directory]::CreateDirectory($newfolder);
write-host ($files[$k].FullName.substring($path.length)+' --> '+$newfolder.substring($path.length));
以上是关于用bat怎样批量提取图片的分辨率或像素大小、文件大小,大神们帮帮忙,谢谢了。的主要内容,如果未能解决你的问题,请参考以下文章