Come ottenere l'estensione del file utilizzando PowerShell

  1. Ottieni l’estensione del file usando Split-Path in PowerShell
  2. Ottieni l’estensione del file usando il cmdlet Get-ChildItem in PowerShell
  3. Ottieni l’estensione del file usando System.IO.Path in PowerShell
  4. Ottieni l’estensione del file usando System.IO.FileInfo in PowerShell
  5. Conclusione
Come ottenere l'estensione del file utilizzando PowerShell

È solitamente necessario estrarre un nome di file dal percorso completo mentre si lavora nei tuoi script PowerShell. Ad esempio, il tuo script ha ricevuto un percorso completo di un file e desideri ottenere solo l’estensione del file.

Questa guida completa esplora varie metodologie per estrarre le estensioni dei file utilizzando PowerShell, un compito fondamentale ma cruciale in numerosi scenari di scripting. Ogni sezione dell’articolo presenta un approccio diverso, che spazia dalla semplicità di Split-Path all’uso più sofisticato del framework .NET e della classe System.IO.FileInfo.

Ottieni l’estensione del file usando Split-Path in PowerShell

L’obiettivo principale dell’uso di Split-Path -Leaf in questo contesto è isolare il nome del file e la sua estensione da un dato percorso. Questo metodo è particolarmente efficace quando si lavora solo con il nome del file o un percorso relativo.

Una volta ottenuto il nome del file, l’estensione può essere facilmente estratta utilizzando metodi di divisione delle stringhe.

Esempio di codice:

# Define the file path
$filePath = "sample.txt"

# Extract the file extension
$extension = (Split-Path -Path $filePath -Leaf).Split(".")[1]

# Output the extension
Write-Output $extension

In questo script, iniziamo definendo un nome di file $filePath. Il comando Split-Path -Path $filePath -Leaf isola il nome del file (sample.txt).

Poi dividiamo questa stringa al punto, ottenendo un array dove il primo elemento è il nome del file senza l’estensione (sample), e il secondo elemento è l’estensione (txt). Accedendo al secondo elemento di questo array con [1], otteniamo l’estensione.

Infine, Write-Output viene utilizzato per visualizzare l’estensione.

Output:

ottieni l’estensione del file utilizzando powershell - output 1

Ottieni l’estensione del file usando il cmdlet Get-ChildItem in PowerShell

Il comando Get-ChildItem ottiene gli elementi in una o più posizioni specificate. Ad esempio, se l’oggetto è un contenitore, ottiene le cose all’interno di detto contenitore, noti come elementi figli.

Una posizione può essere un file system, come una directory, o un sito esposto da un diverso provider di Windows PowerShell. Il comando Get-ChildItem ottiene le directory, le sottodirectory e i file in un’unità del file system.

Poiché il cmdlet Get-ChildItem si occupa di file, ha un’attributo proprietà di PowerShell che possiamo esportare per ottenere l’estensione del file interrogato. A differenza del cmdlet Split-Path, questo metodo può gestire correttamente l’estensione anche se ci sono caratteri punto nel nome del file.

Esempio di codice:

Get-ChildItem 'sample.txt' | Select-Object Extension

In questo script, Get-ChildItem 'sample.txt' recupera l’oggetto file per sample.txt. Il cmdlet Get-ChildItem viene tipicamente utilizzato per elencare gli elementi in una directory, ma quando fornito con un nome di file specifico, restituisce l’oggetto file per quel file.

Questo oggetto include varie proprietà, una delle quali è l’estensione del file.

L’output da Get-ChildItem viene quindi inviato a Select-Object Extension. Questo cmdlet filtra le proprietà dell’oggetto file, producendo solo la proprietà Extension.

Output:

ottieni l’estensione del file utilizzando powershell - output 2

Ottieni l’estensione del file usando System.IO.Path in PowerShell

L’approccio seguente si basa sulle classi del framework .NET. Anche se è comunemente sconsigliato utilizzare le classi del framework .NET nei script PowerShell, specialmente se è disponibile un comando nativo di PowerShell, potrebbe essere appropriato per questo caso d’uso specifico.

Nell’esempio seguente, se ti viene fornito il nome del file, utilizzeremmo i metodi statici GetExtension dalla classe System.IO.Path:

Esempio di codice:

[System.IO.Path]::GetExtension("sample.txt")

Nell’esempio fornito, la classe .NET [System.IO.Path] viene utilizzata, e il suo metodo statico GetExtension() viene chiamato. Passiamo "sample.txt" come argomento al metodo.

Questo metodo analizza la stringa ed estrae la sottostringa che rappresenta l’estensione del file. La bellezza di questo metodo risiede nella sua semplicità e nel suo approccio diretto alla gestione dei nomi di file e percorsi, poiché non richiede che il file esista nel file system.

Output:

ottieni l’estensione del file utilizzando powershell - output 3

Ottieni l’estensione del file usando System.IO.FileInfo in PowerShell

L’uso principale di System.IO.FileInfo in questo contesto è ottenere informazioni dettagliate su un file specifico, come la sua estensione. Questo metodo è particolarmente utile in script in cui i metadati del file sono cruciali e c’è bisogno di più di una semplice gestione di file.

Esempio di codice:

# Create a FileInfo object for the specified file
$FileInfo = New-Object System.IO.FileInfo('sample.txt')

# Access the extension property of the FileInfo object
$Extension = $FileInfo.Extension

# Print the extension
Write-Output $Extension

In questo script, iniziamo il processo creando un oggetto System.IO.FileInfo per sample.txt. Questo oggetto racchiude vari dettagli sul file, inclusi il suo nome, directory, dimensione e, importante, la sua estensione.

Accedendo alla proprietà .Extension dell’oggetto FileInfo, estraiamo l’estensione del file. Questa proprietà restituisce l’estensione come stringa, completa di punto iniziale (ad esempio, .txt).

Output:

ottenere l’estensione del file usando powershell - uscita 4

Conclusione

Navigare attraverso le sfumature delle estensioni di file in PowerShell rivela uno spettro di tecniche, ognuna con i propri vantaggi e applicazioni uniche. Questa esplorazione ci ha portato dall’uso diretto di Split-Path e Get-ChildItem, ideali per recuperi semplici e veloci, ai reami più profondi del framework .NET con System.IO.Path e System.IO.FileInfo, dove un equilibrio tra complessità e capacità è elegantemente raggiunto.

Che tu stia automatizzando un compito di routine, eseguendo operazioni di file in blocco, o sviluppando script sofisticati per la gestione del sistema, comprendere questi metodi arricchisce il tuo toolkit PowerShell. I diversi approcci discussi qui sottolineano l’adattabilità e la robustezza di PowerShell, consentendo sia ai neofiti che agli scripter esperti di personalizzare le proprie soluzioni con precisione ed efficienza.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Articolo correlato - PowerShell File