141 votes

Powershell - extraire le nom de fichier et l'extension

Je dois extraire le nom du fichier et l'extension à partir de par exemple mon.fichier.xlsx. Je ne connais pas le nom du fichier ou l'extension et il peut y avoir plus de points dans le nom, donc je dois chercher la chaîne à partir de la droite et quand je trouve le premier point (ou le dernier à partir de la gauche), extraire la partie du côté droit et la partie du côté gauche de ce point.

Comment faire?

11voto

Jaqueline Vanek Points 826
PS C:\Utilisateurs\joshua> $fichier = New-Object System.IO.FileInfo('file.type')
PS C:\Utilisateurs\joshua> $fichier.BaseName, $fichier.Extension
file
.type

8voto

Shay Levy Points 41404

Vérifiez les propriétés BaseName et Extension de l'objet FileInfo.

1 votes

Avez-vous des informations particulières à demander? Il suffit de faire passer un fichier à Get-Member pour révéler tous ses membres ou de consulter MSDN pour trouver l'aide officielle.

2voto

Jacob Degeling Points 40

À partir de PowerShell 6.0, Split-Path possède un paramètre -Extenstion. Cela signifie que vous pouvez faire :

$chemin | Split-Path -Extension

ou

Split-Path -Path $chemin -Extension

Pour $chemin = "test.txt" les deux versions retourneront .txt, y compris le point.

0voto

hans57sauc Points 1

Ceci est une adaptation, si quelqu'un est curieux. J'avais besoin de tester si RoboCopy avait copié avec succès un fichier vers plusieurs serveurs pour son intégrité :

   $Comp = get-content c:\myfile.txt

ForEach ($PC in $Comp) {
    dir "\\$PC\Folder\Share\*.*" | Select-Object $_.BaseName
}

Simple et clair, cela montre le répertoire et le fichier à l'intérieur. Si vous voulez spécifier un nom de fichier ou une extension, remplacez simplement les * par ce que vous voulez.

    Répertoire : \\SERVEUR\Folder\Share

Mode                LastWriteTime     Length Name                                                                                                                                             
----                -------------     ------ ----                                                                                                                                             
-a---         27/02/2015   17:33    1458935 Test.pptx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X