2012-07-28 14 views

risposta

4

PowerShell, come il resto del sistema operativo Windows, indovina semplicemente il tipo di file basato sull'estensione.

Tuttavia, ci sono programmi per l'interpretazione di file di terze parti, quelli che effettivamente guardano il contenuto del file.

C'è un truly excellent answer to this question over on SuperUser. I migliori consigli includono File for Windows e TrID.

+0

Che funziona. Grazie! – Nick

3

È possibile ottenere i tipi di mime dal registro. Sfortunatamente l'hive HKEY_CURRENT_USER non è auto-mappato come unità, quindi dovrai prima effettuare il check-in.

function Get-MimeType() 
{ 
    param($extension = $null); 
    $mimeType = $null; 
    if ($null -ne $extension) 
    { 
    $drive = Get-PSDrive HKCR -ErrorAction SilentlyContinue; 
    if ($null -eq $drive) 
    { 
     $drive = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT 
    } 
    $mimeType = (Get-ItemProperty HKCR:$extension)."Content Type"; 
    } 
    $mimeType; 
} 

Ecco un esempio di utilizzo

PS> Get-MimeType -extension .zip 
application/x-zip-compressed 

-Joe

+3

Questo in realtà non verifica il contenuto del file di destinazione, semplicemente legge l'estensione e cerca la relazione del tipo di file dal sistema operativo. –

3

Se si dispone di .NET 4.5+, è possibile utilizzare il metodo statico System.Web.MimeMapping.GetMimeMapping:

> Add-Type -AssemblyName "System.Web" 
> [System.Web.MimeMapping]::GetMimeMapping("C:\foo.zip") 
application/x-zip-compressed 

merito va a this answer a una domanda simile su .NET.


Modifica: ha letto male la domanda. GetMimeMapping restituisce il tipo MIME per estensione, non analizza il contenuto.

0
$ext = ".exe" 
$null = New-PSDrive HKCR Registry HKEY_CLASSES_ROOT -ea 0 
$mime = (gp HKCR:$ext)."Content Type" 
write-host $ext $mime 
+2

Si prega di elaborare la risposta (dicci _che è il problema, e _ come_ questo codice corregge tale problema). Le risposte al solo codice sono meno educative e di uso limitato. –

+1

Si dovrebbe dare più contesto/spiegazione per il codice, soprattutto perché ci sono già diverse risposte di alta qualità. Si prega di leggere il sito [tour] e [risposta]. – EJoshuaS

Problemi correlati