批处理取得bmp文件名、长度、宽度、及文件大小

文件夹BMP下有多个bmp文件,现要输出bmp文件名、长度、宽度、及文件大小信息到txt文件里。
例如:文件夹BMP下有a.bmp、b.bmp、c.bmp等多个文件
输出内容为:
bmp文件1的名称:a.bmp;长:10像素,宽:20像素;大小10K。
bmp文件2的名称:b.bmp;长:25像素,宽:30像素;大小20K。
bmp文件3的名称:c.bmp;长:100像素,宽:45像素;大小100K。
……
这个样子的。

介个用批处理是难以完成的,至少得用vbs这种稍微高级一点的语言:

将下面的代码保存为vbs文件,代码中第一句话为bmp文件所在路径,这个默认为c盘根目录,请自己修改为你想要的。
'═════代═══码═══开═══始═════
Dir = "c:\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
set fw=fso.createtextfile("文件信息.txt",2)
set fs=fso.getfolder(dir).files
for each f in fs
if lcase(right(f.name,4))=".bmp" then
i=i+1
Set objFolder = objShell.NameSpace(fso.GetParentFolderName(f.path))
Set objItem = objFolder.ParseName(fso.GetFileName(f.path))
data="BMP文件"&i&"的名称是:"&f.name&";宽:"&objFolder.GetDetailsOf(objItem, 27)&"像素,高"&objFolder.GetDetailsOf(objItem, 28)&"像素,大小"&round(f.size/1024,2)&"KB"
fw.writeline data
end if
next
msgbox "处理完成"
'Created By escortmnm from VBS团队
'═════代═══码═══结═══束═════

补充:
'═════代═══码═══开═══始═════
Dir = "c:\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
set fw=fso.createtextfile("文件信息.txt",2)
set fs=fso.getfolder(dir).files
for each f in fs
if lcase(right(f.name,4))=".bmp" then
i=i+1
Set ADO=createobject("ADODB.Stream")
ADO.Type = 1
ADO.Mode = 3
ADO.open()
ADO.LoadFromFile(f.path)
ADO.position=&H2E
color=Bin2val(ado.read(4))
ADO.close
Set objFolder = objShell.NameSpace(fso.GetParentFolderName(f.path))
Set objItem = objFolder.ParseName(fso.GetFileName(f.path))
data="BMP文件"&i&"的名称是:"&f.name&";宽:"&objFolder.GetDetailsOf(objItem, 27)&"像素,高"&objFolder.GetDetailsOf(objItem, 28)&"像素,大小"&round(f.size/1024,2)&"KB,调色板数:"&color
fw.writeline data
end if
next
msgbox "处理完成"

Function Bin2Val(bin)
dim val
val = 0
for i = 1 to lenb(bin)
val = val*256 + ascb(midb(bin,i,1))
next
Bin2Val=val
End Function
'Created By escortmnm from VBS团队
'═════代═══码═══结═══束═════追问

ADO.position属性哪里有详解。我想看看其他属性。
Function Bin2Val(bin)不明白这个功能的意思?能说明一下吗?
谢谢!

追答

功能就是将二进制数值转换为数值,这个函数是我在网上搜到的。

追问

哦。知道了。
ADO.position=&H2E这句话不明白。能告诉是什么意思吗?网上哪有详解?

追答

这句话是将要读取的起始位置设置为十六进制数2E,因为bmp文件第2E到31位为要获取的数据。
你找ADODB.Stream对象教程即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-17
百度搜索jhead(命令行下获取图片信息的专业工具)
下载后如果不会写批处理可以短消息我