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)
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
Utilisez . Net :
[System.IO.Path]::GetFileName("c:\foo.txt")
renvoie foo.txt
. [System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")
retourne foo
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
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.
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
Get-ChildItem "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" |Select-Object -ExpandProperty Name
$ (Split-Path "D:\Server\Utilisateur\CUST\MEA\Données\In\Fichiers\CORRECTED\CUST_MEAFile.csv" -leaf)