Come estrarre il nome del file da un percorso utilizzando PowerShell

  1. Usa il Cmdlet Split-Path per Estrarre il Nome del File da un Percorso in PowerShell
  2. Usa i Metodi della Classe Path di .NET per Estrarre il Nome del File da un Percorso in PowerShell
  3. Usa i Cmdlets Get-Item e Get-ChildItem per Estrarre il Nome del File da un Percorso in PowerShell
  4. Usa le Espressioni Regolari per Estrarre il Nome del File da un Percorso in PowerShell
  5. Usa la Manipolazione delle Stringhe per Estrarre il Nome del File da un Percorso in PowerShell
  6. Usa la Classe System.IO.FileInfo per Estrarre il Nome del File da un Percorso in PowerShell
  7. Conclusione
Come estrarre il nome del file da un percorso utilizzando PowerShell

Un percorso di file indica la posizione del file nel sistema. Mentre si lavora con i file in PowerShell, potrebbe essere necessario ottenere solo il nome del file da un percorso.

Ci sono più modi per ottenere il percorso dei file in PowerShell. Questo tutorial ti insegnerà a estrarre il nome del file da un percorso con PowerShell.

Usa il Cmdlet Split-Path per Estrarre il Nome del File da un Percorso in PowerShell

In PowerShell, il cmdlet Split-Path è uno strumento utile per isolare segmenti specifici di un dato percorso. Che si tratti della cartella genitore, sottocartella, nome del file o semplicemente dell’estensione del file, Split-Path ti consente di targettizzare e visualizzare questi elementi.

Estrai il Nome del File con Estensione

Per catturare il nome del file insieme alla sua estensione da un percorso, puoi utilizzare il comando Split-Path con il parametro -Leaf:

Split-Path C:\pc\test_folder\hello.txt -Leaf

Output:

hello.txt

Ottieni il Nome del File Senza Estensione

Nei casi in cui hai bisogno del nome del file senza l’estensione, il parametro -LeafBase è utile. Tuttavia, è importante notare che questo parametro è disponibile nelle versioni di PowerShell 6.0 e successive:

Split-Path C:\pc\test_folder\hello.txt -LeafBase

Output:

hello

Usa i Metodi della Classe Path di .NET per Estrarre il Nome del File da un Percorso in PowerShell

In .NET, la classe Path offre metodi utili per estrarre facilmente il nome del file e l’estensione da un percorso specificato. Esploriamo queste capacità con esempi.

Estrai il Nome del File con Estensione Utilizzando GetFileName

Il metodo GetFileName della classe Path recupera il nome del file insieme alla sua estensione da un percorso dato. Dimostriamo questo con il percorso C:\pc\test_folder\hello.txt:

[System.IO.Path]::GetFileName('C:\pc\test_folder\hello.txt')

Output:

hello.txt

Ottieni il Nome del File Senza Estensione Utilizzando GetFileNameWithoutExtension

Per estrarre solo il nome del file senza l’estensione, puoi usare il metodo GetFileNameWithoutExtension. Questo è particolarmente utile quando hai bisogno del nome del file stesso, escludendo il tipo di file:

[System.IO.Path]::GetFileNameWithoutExtension('C:\pc\test_folder\hello.txt')

Output:

hello

Usa i Cmdlets Get-Item e Get-ChildItem per Estrarre il Nome del File da un Percorso in PowerShell

In PowerShell, i cmdlets Get-Item e Get-ChildItem sono strumenti essenziali per lavorare con file e directory, consentendoti di estrarre informazioni specifiche sull’elemento in una posizione data.

Vediamo come usare questi cmdlet per estrarre il nome del file da un dato percorso, comprese le variazioni per ottenere il nome del file con o senza estensione.

Estrai il Nome del File con Estensione Utilizzando Get-Item

Il cmdlet Get-Item recupera informazioni dettagliate sull’elemento specificato, inclusi la sua directory, modalità, data e ora dell’ultima scrittura, lunghezza e nome. Per estrarre il nome del file con l’estensione, puoi utilizzare la proprietà .Name in combinazione con Get-Item.

Dimostriamo questo con un percorso specifico, C:\pc\test_folder\hello.txt:

(Get-Item C:\pc\test_folder\hello.txt).Name

Output:

hello.txt

Ottieni il Nome del File Senza Estensione Utilizzando Get-Item

Se hai bisogno di estrarre solo il nome del file senza l’estensione, puoi utilizzare la proprietà .BaseName in combinazione con Get-Item. Questo ti consente di isolare solo il nome del file dal percorso fornito:

(Get-Item C:\pc\test_folder\hello.txt).BaseName

Output:

hello

Applica il Metodo con Get-ChildItem

Questo approccio è applicabile anche quando si utilizza il cmdlet Get-ChildItem, che recupera informazioni sugli elementi in una posizione specificata. Ecco come puoi usarlo per estrarre il nome del file con o senza l’estensione:

(Get-ChildItem C:\pc\test_folder\hello.txt).Name
(Get-ChildItem C:\pc\test_folder\hello.txt).BaseName

Output:

hello.txt
hello

Usa le Espressioni Regolari per Estrarre il Nome del File da un Percorso in PowerShell

Le espressioni regolari possono essere utilizzate anche per estrarre il nome del file da un percorso in PowerShell. La classe Regex in .NET fornisce strumenti potenti per il matching dei pattern e la manipolazione.

Vediamo come funziona:

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Use regular expression to extract the filename
$filename = [System.Text.RegularExpressions.Regex]::Match($path, '\\([^\\]+)$').Groups[1].Value
$filename

Output:

hello.txt

In questo esempio, utilizziamo un’espressione regolare per catturare il testo dopo l’ultimo carattere di barra rovesciata, che rappresenta il nome del file insieme alla sua estensione.

L’espressione regolare '\\([^\\]+)$' può essere scomposta come segue:

  • \\: Corrisponde a una barra rovesciata nel percorso.
  • ([^\\]+): Cattura uno o più caratteri che non sono una barra rovesciata (che rappresentano il nome del file con estensione) all’interno di un gruppo di cattura.
  • $: Specifica che la corrispondenza deve avvenire alla fine della stringa.

Utilizzando il metodo Match dalla classe Regex, applichiamo l’espressione regolare al percorso.

La corrispondenza risultante contiene il nome del file con la sua estensione. Accediamo a questo tramite Groups[1].Value per estrarre il nome del file desiderato.

Usa la Manipolazione delle Stringhe per Estrarre il Nome del File da un Percorso in PowerShell

Tecniche di manipolazione delle stringhe possono essere impiegate anche per estrarre il nome del file da un percorso. Ad esempio, puoi utilizzare il metodo LastIndexOf per trovare l’ultima occorrenza della barra rovesciata ed estrarre il nome del file di conseguenza.

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Find the index of the last backslash
$lastBackslashIndex = $path.LastIndexOf("\") + 1

# Extract the filename
$filename = $path.Substring($lastBackslashIndex)
$filename

Output:

hello.txt

Qui, utilizziamo il metodo LastIndexOf per determinare l’indice dell’ultima occorrenza di una barra rovesciata (\) nel percorso, identificando essenzialmente la posizione in cui inizia il nome del file.

  • $lastBackslashIndex = $path.LastIndexOf("\") + 1: Questa riga calcola l’indice dell’ultima barra rovesciata e aggiunge 1 per garantire che iniziamo a estrarre caratteri dopo la barra rovesciata.

Successivamente, utilizziamo il metodo Substring per estrarre il nome del file, a partire dall’indice dopo l’ultima barra rovesciata e continuando fino alla fine della stringa.

  • $filename = $path.Substring($lastBackslashIndex): Qui, estraiamo il nome del file utilizzando Substring con l’indice calcolato.

Usa la Classe System.IO.FileInfo per Estrarre il Nome del File da un Percorso in PowerShell

La classe System.IO.FileInfo fornisce proprietà per accedere alle informazioni sul file, incluso il nome del file. Possiamo creare un oggetto FileInfo e quindi accedere alla proprietà Name per ottenere il nome del file.

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Create a FileInfo object
$fileInfo = New-Object System.IO.FileInfo $path

# Extract the filename
$filename = $fileInfo.Name
$filename

Output:

hello.txt

In questo esempio, creiamo un oggetto FileInfo utilizzando New-Object e la classe System.IO.FileInfo, consentendoci di accedere a proprietà e metodi relativi ai file.

  • $fileInfo = New-Object System.IO.FileInfo $path: Questa riga di codice costruisce un oggetto FileInfo basato sul percorso fornito.

Successivamente, utilizziamo la proprietà Name dell’oggetto FileInfo per estrarre il nome del file.

  • $filename = $fileInfo.Name: Qui, recuperiamo il nome del file accedendo alla proprietà Name dell’oggetto FileInfo.

Conclusione

In questo tutorial, abbiamo esplorato vari metodi per estrarre nomi di file da percorsi in PowerShell. Dall’uso di cmdlet integrati come Split-Path all’uso di espressioni regolari e manipolazione delle stringhe, hai una gamma di opzioni da scegliere in base alle tue esigenze specifiche.

Comprendere queste tecniche migliorerà la tua competenza nella gestione dei percorsi dei file e nell’estrazione delle informazioni essenziali sui file in PowerShell. Che tu preferisca la semplicità dei cmdlet integrati o la versatilità delle espressioni regolari, PowerShell offre un set robusto di strumenti per una manipolazione efficace dei file.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Articolo correlato - PowerShell File