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

È 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 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 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 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:
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.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArticolo correlato - PowerShell File
- Come caricare file con FTP in PowerShell
- Come creare un file di testo utilizzando Windows PowerShell
- Come estrarre il nome del file da un percorso utilizzando PowerShell
- Come leggere i file riga per riga in Windows PowerShell
- Come memorizzare il contenuto di un file di testo in una variabile utilizzando PowerShell
- Come ottenere il percorso completo dei file in PowerShell