У меня есть серия строк, которые представляют собой полные пути к файлам. Я хочу сохранить только имя файла без расширения файла и ведущего пути. Итак, из этого:
c:\temp\myfile.txt
к
myfile
На самом деле я не выполняю итерацию по каталогу, и в этом случае basename
можно использовать что-то вроде свойства powershell , а я имею дело только со строками.
file
powershell
directory
Ларрик
источник
источник
Ответы:
Для этого есть удобный метод .NET:
источник
Намного проще, чем я думал, решить проблему отображения полного пути, каталога, имени файла или расширения файла.
другие формы:
источник
$csr = Get-ChildItem -Path "$($domain.FullName)/*.csr"
затемWrite-Host "fileName: $($csr.Basename)"
На основе ответа @ walid2mi:
Обратите внимание: это работает, только если данный файл действительно существует .
источник
или
или
источник
вы можете использовать свойство basename
источник
@ Кит ,
вот еще вариант:
источник
Для любой произвольной строки пути различные статические методы объекта System.IO.Path дают следующие результаты.
Ниже приведен код, сгенерировавший вышеуказанный вывод.
Написание и тестирование сценария, сгенерировавшего описанное выше, выявили некоторые особенности того, чем PowerShell отличается от C #, C, C ++, языка командных сценариев Windows NT и всего остального, с чем у меня есть опыт.
источник
Начиная с PowerShell 6, вы получаете имя файла без расширения, например:
источник
Этот скрипт ищет в папке и подпапках и переименовывает файлы, удаляя их расширение.
источник
Расширяя ответ Рене Ниффенеггера, для тех, у кого нет доступа к PowerShell версии 6.x, мы используем Split Path, который не проверяет наличие файла:
Это вернет myfile.txt . Если мы знаем, что в имени файла нет точек, мы можем разделить строку и взять первую часть:
или
Это возвращает « myfile ». Если имя файла может включать точки, на всякий случай можно использовать следующее:
Это вернет myfile.txt.config . Здесь я предпочитаю использовать Substring () вместо Replace (), потому что расширение, которому предшествует точка, также может быть частью имени, как в моем примере. Используя Substring, мы возвращаем имя файла без расширения по запросу.
источник
Вот без скобок
источник
Это можно сделать, разделив струну пару раз.
Вот код без комментариев:
источник