标题: [其他] 求一段识别文件类型的BAT代码,也就是判断后缀名 [打印本页]
作者: 飏有泪 时间: 2013-7-15 17:09 标题: 求一段识别文件类型的BAT代码,也就是判断后缀名
今天无意看到CHKResume这款恢复磁盘碎片的软件,于是研究了一下它的工作原理——也就是识别文件类型
它用的是16进制代码识别,识别的是文件头,有点像“特征码”的味道~~!
于是我就想到用Debug这个工具,可是我对debug不熟悉,也对16进制不熟悉
于是我问问各位大虾,能不能这样做,思路有木有错,Debug能不能这么“玩”?
也想知道怎么做,求代码,求更详细思路!
。。。不知分类有木有错?
附:CHKResume下载地址——http://ishare.iask.sina.com.cn/f/23940612.html
作者: 522235677 时间: 2013-7-15 23:49
批处理识别后缀简单啊。但是你说个软件可能不止这么简单哦
作者: 飏有泪 时间: 2013-7-16 14:13
我是不知道文件后缀名,或者文件后缀名有错误,要判断文件正确的后缀名。代码,有没,老兄?
最好用debug,不要其他第三方。
作者: CrLf 时间: 2013-7-16 20:40
本帖最后由 CrLf 于 2013-7-16 20:46 编辑
一个方案是 ascode,比 debug 通用些:- @echo off
- if "%1"=="" goto gethex
- if %1%2%3%4==52617221 echo 可能是 RAR 格式
- if %1%2%3==FFD8FF echo 可能是 JPG 格式文本
- if %1%2%3%4%5==4749463839 echo 可能是 GIF 格式文本
- if %1%2==FFFE echo 可能是 Unicode 格式文本
-
- :gethex
- (for /f "delims=" %%a in ('findstr /ib "::gethex" "%~0"') do echo %%~na)>gethex.com
- (gethex.com; &echo;)<222.txt | cmd /vc "set /p str=&%0 !str!"
- ::gethex\RQPUWP]UZV_BBBB5``PY(E1(E5)E7)E<(E@)EI-
- ::gethex\SX3CP< ~v<P}k%ooQRY2AY0@ uP0EPGEB?_]XYZ
- ::gethex\020680008KN8740LKN82004M4MJL3L3K7402454N
- ::gethex\K40KLM213L007432K408LM213L0J74063L0M7402
- ::gethex\NK078JM0N82O00NKN38JM052K104M2NJN815005J
- ::gethex\N8110050K440KK01008KLM8KM6LM2158NKL6LM20
- ::gethex\80N20O80L23080OJ3J7L0380L207K402LM21L3
复制代码
另一个方案是 ado,用 "cscript /nologo gethex.vbs 要取得的文件 要取得的字节数" 可以取得头部几个字节的 hex,至于比较关键词什么的,就和上面的 bat 大同小异了,gethex.vbs 内容如下:- Const length = 16 '输出时每段的字节数
- delim = vbCrLf '连接连接每段的字符串
-
- Dim var()
- ReDim var(0)
- id = 0
-
- With CreateObject("ADODB.Stream")
- .Type = 1
- .Open
- .LoadFromFile WScript.Arguments(0)
-
- For i = 1 To WScript.Arguments(1)
- h = Hex(AscB(.Read(1)))
- If Len(h) = 1 Then h = 0 & h
- var(id) = var(id) & h & " "
-
- If (i Mod length) = 0 Then
- var(id) = var(id)
- id = id+1
- ReDim Preserve var(id)
- End If
- Next
- End With
-
- WScript.Echo Join(var,delim)
复制代码
作者: CrLf 时间: 2013-7-16 20:44
本帖最后由 CrLf 于 2013-7-16 20:45 编辑
不想用 com 也不想用 vbs 的话,fc 也可以获得 hex,类似这个帖子:
http://www.bathome.net/viewthread.php?tid=12688
还有这个帖子也可以参考下:
http://www.bathome.net/viewthread.php?tid=15721
作者: wskwfkbdn 时间: 2013-7-17 11:11
不管恢复出来的文件是什么后缀名,或是没有后缀,用EXeinfo工具检测,可对整个文件夹进行检测,功能强大的特征码查询工具称之查壳工具,包括任意有效文件的检测,本人最爱查壳工具之一。
作者: CrLf 时间: 2013-7-17 12:27
回复 6# wskwfkbdn
试了下,EXeinfo 真不错,谢谢分享~
作者: Python 时间: 2013-7-17 13:11
回复 7# CrLf
也可以试试FFI(File Format Identifier)
作者: CrLf 时间: 2013-7-17 17:43
回复 8# Python
好像没找到判断文件格式的功能,是在第三方插件里吗?
作者: wankoilz 时间: 2013-7-18 00:37
楼主似乎是有查找文件特征码然后恢复的意思。
用WinHex吧。可以搜索你所谓的“特征码”,又能直接保存指定扇区数据。
作者: 飏有泪 时间: 2013-8-1 15:29
回复 10# wankoilz
说不上是特征码,有点像”文件头“那种感觉
作者: 飏有泪 时间: 2013-8-1 15:30
谢谢楼上的各位老大了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |