Ich möchte den Dateinamen aus dem folgenden Pfad extrahieren:
D: \ Server \ Benutzer \ CUST \ MEA \ Data \ In \ Files \ CORRECTED \ CUST_MEAFile.csv
Jetzt habe ich diesen Code geschrieben, um den Dateinamen zu erhalten. Dies funktioniert einwandfrei, solange sich die Ordnerebene nicht geändert hat. Falls die Ordnerebene geändert wurde, muss dieser Code neu geschrieben werden. Ich suche nach einer Möglichkeit, es flexibler zu gestalten, da der Code unabhängig von der Ordnerebene immer den Dateinamen extrahieren kann.
($outputFile).split('\')[9].substring(0)
powershell
powershell-2.0
user664481
quelle
quelle
Verwenden .Netz::
[System.IO.Path]::GetFileName("c:\foo.txt")
kehrt zurückfoo.txt
.[System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")
kehrt zurückfoo
quelle
Wenn Sie den Basisnamen in Get-ChildItem verwenden, wird der Name der Datei und bei Verwendung des Namens der Dateiname mit der Erweiterung angezeigt.
$filepath = Get-ChildItem "E:\Test\Basic-English-Grammar-1.pdf" $filepath.BaseName Basic-English-Grammar-1 $filepath.Name Basic-English-Grammar-1.pdf
quelle
Sie könnten das gewünschte Ergebnis erhalten.
$file = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" $a = $file.Split("\") $index = $a.count - 1 $a.GetValue($index)
Wenn Sie "Get-ChildItem" verwenden, um den "vollständigen Namen" abzurufen, können Sie auch "name" verwenden, um nur den Namen der Datei abzurufen.
quelle
-1
Sie einfach den Index, wenn Sie den Array-Ansatz$file.Split("\")[-1]
Get-ChildItem "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" |Select-Object -ExpandProperty Name
quelle
Um die obige Antwort zu vervollständigen, verwenden Sie .Net.
In diesem Code wird der Pfad im
%1
Argument gespeichert (das in der Registrierung unter Anführungszeichen geschrieben ist, die maskiert sind :)\"%1\"
. Um es abzurufen, benötigen wir das$arg
(eingebaute Argument). Vergessen Sie nicht das Zitat herum$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
quelle
$(Split-Path "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" -leaf)
quelle
Sie können dies versuchen:
[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
quelle
Suchen Sie eine Datei mit einem Platzhalter und erhalten Sie den Dateinamen:
Resolve-Path "Package.1.0.191.*.zip" | Split-Path -leaf
quelle
$file = Get-Item -Path "c:/foo/foobar.txt" $file.Name
Funktioniert mit beiden relativen und absoluten Pfaden
quelle