J'ai besoin d'extraire le nom de fichier et l'extension de par exemple my.file.xlsx. Je ne connais pas le nom du fichier ou de l'extension et il peut y avoir plus de points dans le nom, donc j'ai besoin de rechercher la chaîne de droite et quand je trouve le premier point (ou le dernier à partir de la gauche), extrayez la partie sur le côté droit et la partie sur le côté gauche de ce point.
Il y a peut-être une meilleure solution, mais je n'ai rien trouvé ici ni ailleurs. Je vous remercie
.net
powershell
powershell-2.0
culter
la source
la source
Réponses:
Si le fichier sort du disque et comme d'autres l'ont indiqué, utilisez les propriétés
BaseName
etExtension
:Si vous recevez le nom du fichier dans le cadre d'une chaîne (par exemple, provenant d'un fichier texte), j'utiliserais les méthodes
GetFileNameWithoutExtension
etGetExtension
static de la classe System.IO.Path :la source
[System.IO.Path] | Get-Member -Static
[System.IO.Path]::GetExtension
renvoie l'extension incluant le point (".") .la source
Si provient d'un fichier texte et que le fichier de nom présumé est entouré d'espaces blancs, c'est un moyen:
S'il s'agit d'un fichier, vous pouvez utiliser quelque chose comme celui-ci en fonction de vos besoins:
la source
la source
Vérifiez les propriétés BaseName et Extension de l'objet FileInfo.
la source
Utiliser Split-Path
la source
Split(".")[-1]
le faire fonctionner avec des fichiers avec des points dans le nomsimplement fais-le:
la source
$file.Basename
Ceci est une adaptation, si quelqu'un est curieux. J'avais besoin de tester si RoboCopy avait copié avec succès un fichier sur plusieurs serveurs pour son intégrité:
Nice et simple, et il montre le répertoire et le fichier à l'intérieur. Si vous souhaitez spécifier un nom de fichier ou une extension, remplacez simplement les * par ce que vous voulez.
la source
À partir de PowerShell 6.0,
Split-Path
a un-Extenstion
paramètre. Cela signifie que vous pouvez faire:ou
Pour les
$path = "test.txt"
deux versions reviendra.txt
, y compris le point.la source