@echo off
setlocal enabledelayedexpansion
>tmp.vbs echo On Error Resume Next
>>tmp.vbs echo Set jFile = CreateObject("WIA.ImageFile"):jFile.LoadFile WScript.Arguments(0):WScript.Echo "W="^&jFile.Width:WScript.Echo "H="^&jFile.Height
echo 提取文件属性...
if exist 文件信息.txt del 文件信息.txt
set folder=G:\123
for /f "delims=""" %%i in ('dir /a-d /b /s %folder%') do (
for /f "tokens=1,2" %%j in ('dir /tc "%%i" ^| findstr "%%~nxi"') do (
set W=0&set H=0
echo.>>文件信息.txt
echo 文件名称:%%~nxi>>文件信息.txt
echo 文件大小:%%~zi字节>>文件信息.txt
echo 文件所在路径:%%~dpi>>文件信息.txt
echo 创建时间:%%j %%k>>文件信息.txt
echo 修改时间:%%~ti>>文件信息.txt
for /f "delims=" %%a in ('cscript.exe //nologo tmp.vbs "%%i"') do set "%%a"
if !W! gtr 0 echo 图片宽:!W!>>文件信息.txt
if !H! gtr 0 echo 图片高:!H!>>文件信息.txt
echo.>>文件信息.txt))
start "" notepad 文件信息.txt
del tmp.vbs
真搞不懂问你什么运行环境,居然不回答~
windows xp需要Windows Image Acquisition Automation Library v2.0库,百度不能贴地址的自己搜索一下
下载好WIAAutSDK.zip后运行一下RegSvr32 WIAAut.dll注册dll
复制粘贴到记事本,另存为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 -recurse|?{($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)+',"'+$files[$i].Directory.FullName+'",';
$line+=$files[$i].CreationTime.toString('yyyy-MM-dd HH:mm:ss')+',';
$line+=$files[$i].LastWriteTime.toString('yyyy-MM-dd HH:mm:ss')+',';
$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);