Chcę wyodrębnić nazwę pliku z poniższej ścieżki:
D: \ Server \ User \ CUST \ MEA \ Data \ In \ Files \ CORRECTED \ CUST_MEAFile.csv
Teraz napisałem ten kod, aby uzyskać nazwę pliku. Działa to dobrze, o ile poziom folderu się nie zmienił. Ale w przypadku zmiany poziomu folderu kod ten musi zostać przepisany. Szukam sposobu, aby uczynić go bardziej elastycznym, na przykład kod może zawsze wyodrębnić nazwę pliku niezależnie od poziomu folderu.
($outputFile).split('\')[9].substring(0)
powershell
powershell-2.0
user664481
źródło
źródło
Posługiwać się .netto:
[System.IO.Path]::GetFileName("c:\foo.txt")
zwracafoo.txt
.[System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")
zwrotyfoo
źródło
Użycie BaseName w Get-ChildItem wyświetla nazwę pliku, a użycie Name wyświetla nazwę pliku z rozszerzeniem.
$filepath = Get-ChildItem "E:\Test\Basic-English-Grammar-1.pdf" $filepath.BaseName Basic-English-Grammar-1 $filepath.Name Basic-English-Grammar-1.pdf
źródło
Możesz uzyskać taki wynik, jaki chcesz.
$file = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" $a = $file.Split("\") $index = $a.count - 1 $a.GetValue($index)
Jeśli używasz „Get-ChildItem” do uzyskania „pełnej nazwy”, możesz także użyć „name”, aby uzyskać po prostu nazwę pliku.
źródło
-1
jeśli wybierasz metodę tablicową:$file.Split("\")[-1]
Get-ChildItem "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" |Select-Object -ExpandProperty Name
źródło
Aby uzupełnić powyższą odpowiedź, użyj .Net.
W tym kodzie ścieżka jest przechowywana w
%1
argumencie (który jest zapisywany w rejestrze pod cudzysłowami, które są chronione:)\"%1\"
. Aby go odzyskać, potrzebujemy$arg
(wbudowanego arg). Nie zapomnij o cytacie$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
źródło
$(Split-Path "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" -leaf)
źródło
Możesz spróbować tego:
[System.IO.FileInfo]$path = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" # Returns name and extension $path.Name # Returns just name $path.BaseName
źródło
Znajdź plik, używając symboli wieloznacznych i uzyskując nazwę pliku:
Resolve-Path "Package.1.0.191.*.zip" | Split-Path -leaf
źródło
$file = Get-Item -Path "c:/foo/foobar.txt" $file.Name
Działa ze ścieżkami względnymi i bezwzględnymi
źródło