Comment extraire le nom de fichier d'un chemin en utilisant PowerShell

  1. Utiliser la cmdlet Split-Path pour extraire le nom de fichier à partir d’un chemin dans PowerShell
  2. Utiliser les méthodes de la classe Path de .NET pour extraire le nom de fichier à partir d’un chemin dans PowerShell
  3. Utiliser les cmdlets Get-Item et Get-ChildItem pour extraire le nom de fichier à partir d’un chemin dans PowerShell
  4. Utiliser des expressions régulières pour extraire le nom de fichier à partir d’un chemin dans PowerShell
  5. Utiliser la manipulation de chaînes pour extraire le nom de fichier à partir d’un chemin dans PowerShell
  6. Utiliser la classe System.IO.FileInfo pour extraire le nom de fichier à partir d’un chemin dans PowerShell
  7. Conclusion
Comment extraire le nom de fichier d'un chemin en utilisant PowerShell

Un chemin de fichier indique l’emplacement du fichier sur le système. Lors de la manipulation de fichiers dans PowerShell, vous pourriez avoir besoin d’obtenir uniquement le nom du fichier à partir d’un chemin.

Il existe plusieurs façons de récupérer le chemin des fichiers dans PowerShell. Ce tutoriel vous apprendra à extraire le nom de fichier à partir d’un chemin avec PowerShell.

Utiliser la cmdlet Split-Path pour extraire le nom de fichier à partir d’un chemin dans PowerShell

Dans PowerShell, la cmdlet Split-Path est un outil pratique pour isoler des segments spécifiques d’un chemin donné. Que ce soit le dossier parent, le sous-dossier, le nom du fichier ou juste l’extension du fichier, Split-Path vous permet de cibler et d’afficher ces éléments.

Extraire le nom de fichier avec l’extension

Pour capture le nom du fichier avec son extension à partir d’un chemin, vous pouvez utiliser la commande Split-Path avec le paramètre -Leaf :

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

Sortie :

hello.txt

Obtenir le nom de fichier sans l’extension

Dans les cas où vous avez besoin du nom du fichier sans l’extension, le paramètre -LeafBase est utile. Cependant, il est important de noter que ce paramètre est disponible dans les versions 6.0 et ultérieures de PowerShell :

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

Sortie :

hello

Utiliser les méthodes de la classe Path de .NET pour extraire le nom de fichier à partir d’un chemin dans PowerShell

Dans .NET, la classe Path offre des méthodes utiles pour extraire facilement le nom de fichier et l’extension d’un chemin spécifié. Explorons ces capacités avec des exemples.

Extraire le nom de fichier avec l’extension en utilisant GetFileName

La méthode GetFileName de la classe Path récupère le nom du fichier avec son extension à partir d’un chemin donné. Illustrons cela avec le chemin C:\pc\test_folder\hello.txt :

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

Sortie :

hello.txt

Obtenir le nom de fichier sans extension en utilisant GetFileNameWithoutExtension

Pour extraire uniquement le nom du fichier sans l’extension, vous pouvez utiliser la méthode GetFileNameWithoutExtension. Cela est particulièrement utile lorsque vous avez besoin du nom du fichier lui-même, en excluant le type de fichier :

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

Sortie :

hello

Utiliser les cmdlets Get-Item et Get-ChildItem pour extraire le nom de fichier à partir d’un chemin dans PowerShell

Dans PowerShell, les cmdlets Get-Item et Get-ChildItem sont des outils essentiels pour travailler avec des fichiers et des répertoires, vous permettant d’extraire des informations spécifiques sur l’élément à un emplacement donné.

Voyons comment utiliser ces cmdlets pour extraire le nom du fichier à partir d’un chemin donné, y compris les variations pour obtenir le nom de fichier avec ou sans l’extension.

Extraire le nom de fichier avec l’extension en utilisant Get-Item

La cmdlet Get-Item récupère des informations détaillées sur l’élément spécifié, y compris son répertoire, son mode, sa dernière date de modification, sa longueur et son nom. Pour extraire le nom de fichier avec l’extension, vous pouvez utiliser la propriété .Name en combinaison avec Get-Item.

Illustrons cela avec un chemin spécifique, C:\pc\test_folder\hello.txt :

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

Sortie :

hello.txt

Obtenir le nom de fichier sans extension en utilisant Get-Item

Si vous avez besoin d’extraire uniquement le nom de fichier sans l’extension, vous pouvez utiliser la propriété .BaseName en combinaison avec Get-Item. Cela vous permet d’isoler juste le nom du fichier à partir du chemin fourni :

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

Sortie :

hello

Appliquer la méthode avec Get-ChildItem

Cette approche est également applicable lors de l’utilisation de la cmdlet Get-ChildItem, qui récupère des informations sur les éléments dans un emplacement spécifié. Voici comment vous pouvez l’utiliser pour extraire le nom de fichier avec ou sans l’extension :

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

Sortie :

hello.txt
hello

Utiliser des expressions régulières pour extraire le nom de fichier à partir d’un chemin dans PowerShell

Les expressions régulières peuvent également être utilisées pour extraire le nom du fichier à partir d’un chemin dans PowerShell. La classe Regex de .NET fournit des outils puissants pour la correspondance et la manipulation de motifs.

Voyons comment cela fonctionne :

# 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

Sortie :

hello.txt

Dans cet exemple, nous utilisons une expression régulière pour capturer le texte après le dernier antislash, qui représente le nom du fichier avec son extension.

L’expression régulière '\\([^\\]+)$' peut être décomposée comme suit :

  • \\ : Correspond à un antislash dans le chemin.
  • ([^\\]+) : Capture un ou plusieurs caractères qui ne sont pas un antislash (représentant le nom du fichier avec l’extension) dans un groupe de capture.
  • $ : Indique que la correspondance doit se produire à la fin de la chaîne.

En utilisant la méthode Match de la classe Regex, nous appliquons l’expression régulière au chemin.

La correspondance résultante contient le nom du fichier avec son extension. Nous y accédons via Groups[1].Value pour extraire le nom de fichier souhaité.

Utiliser la manipulation de chaînes pour extraire le nom de fichier à partir d’un chemin dans PowerShell

Des techniques de manipulation de chaînes peuvent également être utilisées pour extraire le nom de fichier à partir d’un chemin. Par exemple, vous pouvez utiliser la méthode LastIndexOf pour trouver la dernière occurrence de l’antislash et extraire le nom du fichier en conséquence.

# 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

Sortie :

hello.txt

Ici, nous utilisons la méthode LastIndexOf pour déterminer l’index de la dernière occurrence d’un antislash (\) dans le chemin, identifiant essentiellement la position où commence le nom du fichier.

  • $lastBackslashIndex = $path.LastIndexOf("\") + 1 : Cette ligne calcule l’index du dernier antislash et ajoute 1 pour s’assurer que nous commençons à extraire des caractères après l’antislash.

Ensuite, nous utilisons la méthode Substring pour extraire le nom de fichier, en commençant à l’index après le dernier antislash et en continuant jusqu’à la fin de la chaîne.

  • $filename = $path.Substring($lastBackslashIndex) : Ici, nous extrayons le nom du fichier en utilisant Substring avec l’index calculé.

Utiliser la classe System.IO.FileInfo pour extraire le nom de fichier à partir d’un chemin dans PowerShell

La classe System.IO.FileInfo fournit des propriétés pour accéder aux informations sur le fichier, y compris le nom du fichier. Nous pouvons créer un objet FileInfo et ensuite accéder à la propriété Name pour obtenir le nom du fichier.

# 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

Sortie :

hello.txt

Dans cet exemple, nous créons un objet FileInfo en utilisant New-Object et la classe System.IO.FileInfo, ce qui nous permet d’accéder aux propriétés et méthodes liées au fichier.

  • $fileInfo = New-Object System.IO.FileInfo $path : Cette ligne de code construit un objet FileInfo basé sur le chemin fourni.

Ensuite, nous utilisons la propriété Name de l’objet FileInfo pour extraire le nom du fichier.

  • $filename = $fileInfo.Name : Ici, nous récupérons le nom du fichier en accédant à la propriété Name de l’objet FileInfo.

Conclusion

Dans ce tutoriel, nous avons exploré diverses méthodes pour extraire des noms de fichiers à partir de chemins dans PowerShell. De l’utilisation de cmdlets intégrés comme Split-Path à l’emploi d’expressions régulières et de manipulation de chaînes, vous avez un éventail d’options à choisir en fonction de vos besoins spécifiques.

Comprendre ces techniques améliorera votre compétence dans la gestion des chemins de fichiers et l’extraction d’informations essentielles sur les fichiers dans PowerShell. Que vous préfériez la simplicité des cmdlets intégrés ou la polyvalence des expressions régulières, PowerShell offre un ensemble robuste d’outils pour une manipulation efficace des fichiers.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
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

Article connexe - PowerShell File