web-dev-qa-db-fra.com

Extraire le nom de fichier d'un chemin

Je veux extraire le nom du fichier sous le chemin:

D:\Serveur\Utilisateur\CUST\MEA\Données\In\Fichiers\CORRECTED\CUST_MEAFile.csv

Maintenant, j'ai écrit ce code pour obtenir le nom de fichier. Cela fonctionne bien tant que le niveau du dossier ne change pas. Mais si le niveau du dossier a été modifié, ce code doit être réécrit. Je cherche un moyen de le rendre plus flexible, car le code peut toujours extraire le nom de fichier, quel que soit le niveau du dossier.

($outputFile).split('\')[9].substring(0)
49
user664481

Si vous êtes d'accord avec l'extension, cela devrait faire ce que vous voulez.

$outputPath = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$outputFile = Split-Path $outputPath -leaf
104
Gordon

Utilisez . Net :

[System.IO.Path]::GetFileName("c:\foo.txt") renvoie foo.txt. [System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt") retourne foo

35
angularsen

L'utilisation du nom de base dans Get-ChildItem affiche le nom du fichier et l'utilisation de Nom pour afficher le nom du fichier avec l'extension.

$filepath = Get-ChildItem "E:\Test\Basic-English-Grammar-1.pdf"

$filepath.BaseName

Basic-English-Grammar-1

$filepath.Name

Basic-English-Grammar-1.pdf
9
Sudhir Tharayil

Vous pouvez obtenir le résultat que vous voulez comme ça.

$file = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$a = $file.Split("\")
$index = $a.count - 1
$a.GetValue($index)

Si vous utilisez "Get-ChildItem" pour obtenir le "nom complet", vous pouvez également utiliser "nom" pour obtenir simplement le nom du fichier.

3
David

Juste pour compléter la réponse ci-dessus, utilisez .Net.

Dans ce code, le chemin est stocké dans l'argument %1 (qui est écrit dans le registre sous guillemets et qui sont échappés: \"%1\"). Pour le récupérer, nous avons besoin du $arg (argument incorporé). N'oubliez pas la citation autour de $FilePath.

# Get the File path:  
$FilePath = $args
Write-Host "FilePath: " $FilePath

# Get the complete file name:
$file_name_complete = [System.IO.Path]::GetFileName("$FilePath")
Write-Host "fileNameFull :" $file_name_complete

# Get File Name Without Extension:
$fileNameOnly = [System.IO.Path]::GetFileNameWithoutExtension("$FilePath")
Write-Host "fileNameOnly :" $fileNameOnly

# Get the Extension:
$fileExtensionOnly = [System.IO.Path]::GetExtension("$FilePath")
Write-Host "fileExtensionOnly :" $fileExtensionOnly
1
J. Does

Get-ChildItem "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" |Select-Object -ExpandProperty Name

1
Ian Kemp

$ (Split-Path "D:\Server\Utilisateur\CUST\MEA\Données\In\Fichiers\CORRECTED\CUST_MEAFile.csv" -leaf)

1
Iain