Получение имени каталога самого низкого уровня для файла из разделенного пути с помощью PowerShell Мне нужно получить только последнюю часть пути к файлу. Пример: c:\dir1\dir2\dir3\file.txt Мне нужно поместить dir3 в переменную. Я пытался с Split-Path, но он дает мне весь путь. Ответ 1 Это принимает две вызовы Split-Path AFAICT: PS> Split-Path (Split-Path c:\dir1\dir2\dir3\file.txt -Parent) -Leaf dir3 Ответ 2 Этот вопрос задает вопрос о сплит-пути, но некоторые другие способы: Если файл существует, я считаю, что это гораздо приятнее: (Get-Item c:\dir1\dir2\dir3\file.txt).Directory.Name Если файл не существует, это не сработает. Другим способом в этом случае является использование .NET API, например: $path = [System.IO.Path]; $path::GetFileName($path::GetDirectoryName("c:\dir1\dir2\dir3\file.txt")) Ответ 3 Другой вариант с использованием System.Uri: PS> ([uri]"c:\dir1\dir2\dir3\file.txt").segments[-2].trim('/') dir3 И если файл существует на диске: PS> (dir c:\dir1\dir2\dir3\file.txt).directory.name Ответ 4 Если вы хотите сохранить его простым и путь будет в нормальной форме, вы можете использовать String.Split(): "c:\dir1\dir2\dir3\file.txt".split("\")[-2] Ответ 5 В общем, если вы хотите, чтобы имя каталога, в котором вы находитесь, я использовал это (спасибо Shay Levi за оригинальную идею): PS > (dir).directory.name [0]
Ответ 1 Это принимает две вызовы Split-Path AFAICT: PS> Split-Path (Split-Path c:\dir1\dir2\dir3\file.txt -Parent) -Leaf dir3
Ответ 2 Этот вопрос задает вопрос о сплит-пути, но некоторые другие способы: Если файл существует, я считаю, что это гораздо приятнее: (Get-Item c:\dir1\dir2\dir3\file.txt).Directory.Name Если файл не существует, это не сработает. Другим способом в этом случае является использование .NET API, например: $path = [System.IO.Path]; $path::GetFileName($path::GetDirectoryName("c:\dir1\dir2\dir3\file.txt"))
Ответ 3 Другой вариант с использованием System.Uri: PS> ([uri]"c:\dir1\dir2\dir3\file.txt").segments[-2].trim('/') dir3 И если файл существует на диске: PS> (dir c:\dir1\dir2\dir3\file.txt).directory.name
Ответ 4 Если вы хотите сохранить его простым и путь будет в нормальной форме, вы можете использовать String.Split(): "c:\dir1\dir2\dir3\file.txt".split("\")[-2]
Ответ 5 В общем, если вы хотите, чтобы имя каталога, в котором вы находитесь, я использовал это (спасибо Shay Levi за оригинальную идею): PS > (dir).directory.name [0]