批量识别/纠正文件格式的方法

posted at

Groups:

,

Tags:

Last edited in


TrID是一种文件类型识别软件,它可以通过分析文件内容的字节模式来确定文件的类型。TrID是由Marco Pontello开发的免费软件,可以在Windows系统上运行。TrID通过使用一系列规则来识别文件类型,这些规则称为“定义文件”,可以根据需要进行更新。TrID可以帮助用户确定不知道具体文件类型的文件的扩展名,或者是检测和分析不同版本的同一种文件类型。

它并不包含图形界面,意思是不可以像传统软件那样用鼠标双击后会弹出窗口进行操作,使用它需要使用命令行

PS E:\软件\文件管理\类型识别> .\trid.exe

TrID/32 - File Identifier v2.24 - (C) 2003-16 By M.Pontello

* Error: you have to specify at least one file to analyze!

Usage: TrID <[path]filespec(s)...> [-ae|-ce] [-d:file] [-ns] [-n:nn]
                                   [-@] [-v] [-w] [-?]

Where: <filespec> Files to identify/analyze
       -ae        Add guessed extension to filename
       -ce        Change filename extension
       -d:file    Use the specified defs package
       -ns        Disable unique strings check
       -n:nn      Number of matches to show (default: 5)
       -@         Read file list from stdin
       -v         Verbose mode - display def name, author, etc.
       -w         Wait for a key before exiting
       -?         This help!

虽然也可以批量识别,但仅局限于识别指定路径下包含的文件,并不可以识别路径下的子文件夹内的文件,因此在有大量文件夹的文件需要被识别时,可以结合Powershell 脚本实现调用来完成这种任务。

因为我们需要的是直接识别路径下的文件并直接修改,所以直接使用-ce 以及 -d 选项,Poweshell 脚本可以这样写:

$rootPath = "E:\相册"

# 获取所有子文件夹路径
$subFolders = Get-ChildItem -Path $rootPath -Directory -Recurse

foreach ($folder in $subFolders) {
    # 获取子文件夹完整路径
    $folderPath = $folder.FullName

    # 替换并执行命令
    $cmd = ".\trid.exe ""$folderPath\*"" -ce -d:triddefs.trd"
    Invoke-Expression $cmd
}

因为我需要的是识别相册目录下大量图片的格式,其中很多的图片格式是被错误标注的,例如将 png 文件标注为jpg,使用它来纠正就是一件非常快速的事情。(QQ接收的图片后缀是错标的重灾区)

操作时只需要将下载的软件包解压,将 “trid.exe” 以及 “triddefs.trd”放在同一个文件夹内即可,后者是文件类型识别用的特征库。

然后用新建文本将上述代码粘贴进去,而后保存并将文件名重命名为 “scan.ps1″,重点是后缀改成 “.ps1”,它是 powershell 脚本的后缀。

右键打开终端,没有终端则需要打开 powershell/cmd 并切换到该目录

那么右键打开 Terminal 终端,输入:./scan.ps1 >record.txt

Enter 即可

回车后它便会不断调用这个软件对指定文件夹下所有的文件进行识别,并将日志重定向到 records.txt 中,在这个文本中你可以查看它的识别与修改的情况。

软件下载地址:http://mark0.net/

Comments

发表回复