Ich habe eine Reihe von Zeichenfolgen, die vollständige Pfade zu Dateien sind. Ich möchte nur den Dateinamen ohne die Dateierweiterung und den führenden Pfad speichern. Also daraus:
c:\temp\myfile.txt
zu
myfile
Ich iteriere nicht wirklich durch ein Verzeichnis. In diesem Fall könnte so etwas wie die basename
Eigenschaft von Powershell verwendet werden, sondern ich beschäftige mich nur mit Zeichenfolgen.
file
powershell
directory
larryq
quelle
quelle
Antworten:
Dafür gibt es eine praktische .NET-Methode:
quelle
Viel einfacher als ich dachte, um das Problem der Anzeige des vollständigen Pfads, Verzeichnisses, Dateinamens oder der Dateierweiterung zu lösen.
andere Formen:
quelle
$csr = Get-ChildItem -Path "$($domain.FullName)/*.csr"
dannWrite-Host "fileName: $($csr.Basename)"
Inspiriert von einer Antwort von @ walid2mi:
Bitte beachten Sie: Dies funktioniert nur, wenn die angegebene Datei wirklich vorhanden ist .
quelle
oder
oder
quelle
Sie können die Eigenschaft basename verwenden
quelle
@ Keith ,
hier eine andere Option:
quelle
Bei jeder beliebigen Pfadzeichenfolge ergeben verschiedene statische Methoden für das System.IO.Path-Objekt die folgenden Ergebnisse.
Es folgt der Code, der die obige Ausgabe generiert hat.
Das Schreiben und Testen des Skripts, das das oben Genannte generiert hat, hat einige Macken darüber aufgedeckt, wie sich PowerShell von C #, C, C ++, der Windows NT-Befehlsskriptsprache und fast allem anderen unterscheidet, mit dem ich Erfahrung habe.
quelle
Ab PowerShell 6 erhalten Sie den Dateinamen ohne Erweiterung wie folgt:
quelle
Dieses Skript sucht in einem Ordner und in Unterordnern und benennt Dateien um, indem deren Erweiterung entfernt wird
quelle
Um die Antwort von René Nyffenegger zu erweitern, verwenden wir für diejenigen, die keinen Zugriff auf PowerShell Version 6.x haben, den geteilten Pfad, der nicht auf die Existenz von Dateien testet:
Dies gibt " myfile.txt " zurück. Wenn wir wissen, dass der Dateiname keine Punkte enthält, können wir die Zeichenfolge teilen und den ersten Teil übernehmen:
oder
Dies gibt " myfile " zurück. Wenn der Dateiname aus Sicherheitsgründen Punkte enthalten könnte, könnten wir Folgendes verwenden:
Dies gibt " myfile.txt.config " zurück. Hier bevorzuge ich die Verwendung von Substring () anstelle von Replace (), da die Erweiterung, der ein Punkt vorangestellt ist, auch Teil des Namens sein kann, wie in meinem Beispiel. Bei Verwendung von Teilzeichenfolge geben wir den Dateinamen ohne die gewünschte Erweiterung zurück.
quelle
Hier ist eine ohne Klammern
quelle
Dies kann durch mehrmaliges Teilen der Zeichenfolge erfolgen.
Hier ist der Code ohne Kommentare:
quelle