Mam serię ciągów, które są pełnymi ścieżkami do plików. Chciałbym zapisać samą nazwę pliku, bez rozszerzenia i wiodącej ścieżki. Więc z tego:
c:\temp\myfile.txt
do
myfile
Właściwie nie przechodzę przez katalog, w którym to przypadku basename
można użyć czegoś takiego jak właściwość PowerShell , ale raczej mam do czynienia z samymi ciągami.
file
powershell
directory
larryq
źródło
źródło
Odpowiedzi:
Jest do tego przydatna metoda .NET:
źródło
O wiele łatwiej niż myślałem, aby rozwiązać problem wyświetlania pełnej ścieżki, katalogu, nazwy pliku lub rozszerzenia pliku.
inne formy:
źródło
$csr = Get-ChildItem -Path "$($domain.FullName)/*.csr"
wtedyWrite-Host "fileName: $($csr.Basename)"
Zainspirowany odpowiedzią @ walid2mi:
Uwaga: działa to tylko wtedy, gdy dany plik naprawdę istnieje .
źródło
lub
lub
źródło
możesz użyć właściwości basename
źródło
@Keith ,
tutaj inna opcja:
źródło
Biorąc pod uwagę dowolny ciąg ścieżki, różne metody statyczne obiektu System.IO.Path dają następujące wyniki.
Poniżej znajduje się kod, który wygenerował powyższe dane wyjściowe.
Napisanie i przetestowanie skryptu, który wygenerował powyższe, ujawniło pewne dziwactwa dotyczące tego, jak PowerShell różni się od C #, C, C ++, języka skryptowego poleceń systemu Windows NT i prawie wszystkiego innego, z czym mam jakiekolwiek doświadczenie.
źródło
Zaczynając od PowerShell 6, otrzymujesz nazwę pliku bez rozszerzenia w następujący sposób:
źródło
Ten skrypt wyszukuje w folderze i podfolderach i zmienia nazwy plików, usuwając ich rozszerzenie
źródło
Rozszerzając odpowiedź René Nyffeneggera, dla tych, którzy nie mają dostępu do PowerShell w wersji 6.x, używamy Split Path, który nie testuje istnienia pliku:
Zwraca to „ mojplik.txt ”. Jeśli wiemy, że nazwa pliku nie zawiera kropek, możemy podzielić ciąg i wziąć pierwszą część:
lub
Zwraca „ myfile ”. Jeśli nazwa pliku może zawierać kropki, dla bezpieczeństwa możemy użyć następującego:
Zwraca to „ mojplik.txt.config ”. Tutaj wolę używać Substring () zamiast Replace (), ponieważ rozszerzenie poprzedzone kropką może również być częścią nazwy, jak w moim przykładzie. Używając Substring, zwracamy nazwę pliku bez rozszerzenia zgodnie z żądaniem.
źródło
Oto jeden bez nawiasów
źródło
Można to zrobić, dzieląc strunę kilka razy.
Oto kod bez komentarzy:
źródło