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 ändert. Falls jedoch die Ordnerebene geändert wurde, muss dieser Code neu geschrieben werden. Ich suche einen Weg, um es flexibler zu machen, wie der Code kann immer Dateinamen unabhängig von der Ordnerebene extrahieren.
($outputFile).split('\')[9].substring(0)
Wenn Sie mit der Erweiterung einverstanden sind, sollte dies tun, was Sie wollen.
$outputPath = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$outputFile = Split-Path $outputPath -leaf
Verwenden Sie . Net :
[System.IO.Path]::GetFileName("c:\foo.txt")
gibt foo.txt
zurück. [System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")
gibt foo
zurück
Bei Verwendung des Basisnamens in Get-ChildItem wird der Name der Datei und bei Verwendung von Name 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
Sie könnten das gewünschte Ergebnis erzielen.
$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.
Um die obige Antwort zu vervollständigen, verwenden Sie .Net.
In diesem Code ist der Pfad im %1
Argument (das in der Registrierung unter Anführungszeichen geschrieben ist, die maskiert werden: \"%1\"
). Um es abzurufen, benötigen wir die $arg
(eingebautes Argument). Vergiss nicht das Zitat um $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\Benutzer\CUST\MEA\Daten\In\Files\CORRECTED\CUST_MEAFile.csv" -Blatt)