Мне нужно извлечь имя и расширение файла, например, из my.file.xlsx. Я не знаю имени файла или расширения, и в имени может быть больше точек, поэтому мне нужно найти строку справа, и когда я найду первую точку (или последнюю слева), извлеките часть на правая сторона и часть слева от этой точки.
Может быть, есть лучшее решение, но я не нашел ничего ни здесь, ни где-либо еще. Спасибо
.net
powershell
powershell-2.0
Culter
источник
источник
Ответы:
Если файл отрываясь диска и , как другие утверждали, используют
BaseName
иExtension
свойства:Если вам дано имя файла как часть строки (скажем, из текстового файла), я бы использовал
GetFileNameWithoutExtension
иGetExtension
статические методы из класса System.IO.Path :источник
[System.IO.Path] | Get-Member -Static
[System.IO.Path]::GetExtension
возвращает расширение, включая точку (".") .источник
Если из текстового файла и предполагаемое имя файла окружены пробелами, это способ:
Если это файл, вы можете использовать что-то вроде этого в зависимости от ваших потребностей:
источник
источник
Проверьте свойства BaseName и Extension объекта FileInfo.
источник
Использовать разделенный путь
источник
Split(".")[-1]
чтобы он работал с файлами с точками в именипросто сделай это:
источник
$file.Basename
Это адаптация, если кому интересно. Мне нужно было проверить, успешно ли RoboCopy скопировал один файл на несколько серверов на предмет его целостности:
Красиво и просто, и он показывает каталог и файл внутри него. Если вы хотите указать одно имя файла или расширение, просто замените * на то, что хотите.
источник
Начиная с PowerShell 6.0,
Split-Path
имеет-Extenstion
параметр. Это означает, что вы можете:или
Для
$path = "test.txt"
обеих версий вернется.txt
, включая точку.источник