介个用批处理是难以完成的,至少得用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对象教程即可。