Como renomear em lote arquivos baseados no cabeçalho / metadados do arquivo no Windows?

1

Eu tenho um diretório cheio de arquivos com nomes aleatórios de diferentes tipos, todos sem extensões de arquivo. A maioria são imagens, com alguns vídeos e alguns textos simples. Usei uma das versões do Windows do arquivo para confirmar se todos os arquivos podem ser identificados por seus cabeçalhos / metadata, mas gostaria de automatizar a nomenclatura, pois há aproximadamente 2400 arquivos.

Eu não me importo tanto com o nome do arquivo, mas apenas com a extensão apropriada para o tipo. Alguém está ciente de um programa ou script que pode fazer isso?

    
por Infraded 02.01.2012 / 06:54

3 respostas

2

Isto parece ser semelhante a este pergunta exceto que você exige que os arquivos sejam renomeados além de simplesmente identificá-los. Isso também pode ser feito com a mesma ferramenta ( TrID - File Identifier ) mencionada nessa pergunta.

TrID é um utilitário projetado para identificar tipos de arquivos a partir de suas assinaturas binárias. Embora existam utilitários semelhantes com lógica codificada, o TrID não possui regras fixas. Em vez disso, é extensível e pode ser treinado para reconhecer novos formatos de maneira rápida e automática. O arquivo de definições (também disponível para download no mesmo site) atualmente com mais de 5000 tipos de arquivos.

Você pode usar o comando TrID na linha de comando com a opção -ae para instruir o TrID a renomear os arquivos após a identificação. Por exemplo:

C:\TrID>trid c:\temp\* -ae

Resultado:

TrID/32 - File Identifier v2.20 - (C) 2003-15 By M.Pontello
Definitions found: 5702 Analyzing...

File: c:\temp\FILE0001.CHK 75.8% (.BAV) The Bat! Antivirus plugin (187530/5/21)

File: c:\temp\FILE0002.CHK 77.8% (.OGG) OGG Vorbis Audio (14014/3)

File: c:\temp\FILE0003.CHK 86.0% (.DOC) Microsoft Word document (49500/1/4)

File: c:\temp\FILE0004.CHK 42.6% (.EXE) UPX compressed Win32 Executable (30569/9/7)

4 file(s) renamed.

    
por 13.04.2015 / 13:24
1

Foi-me dito que este link funciona. Embora eu nunca tenha estado em um lugar para testar.

Se parecer um fracasso, o link tem o comando linux file () reescrito para uso em um ambiente Windows. em seguida, execute um bom lote como este:

@echo off
dir /b "c:\(path to folder containing files)" >>files.txt
for /f %%i in (files.txt) do (
##use file /b and a set of conditionals with find to parse extensions  
based on header) del filelist.txt

Boa sorte!

    
por 02.01.2012 / 07:39
0

No Windows, há filetype.exe e faz exatamente o que você precisa. Você pode baixá-lo aqui: link . Também contém uma mini ajuda.

    
por 01.11.2013 / 02:28