Назад | Перейти на главную страницу

Переменная разделения Powershell без новой строки или пробелов

Я пытаюсь разбить имя файла без расширения и назначить его новой переменной. Но функция .split ('') добавляет новый пробел или табуляцию. Есть предложения, как это исправить?

$dmpfile = "test.dmp"
$filename = $dmpfile.split('.dmp')
echo $filename
test

ls $filename*.log
no output.............
echo $filename*.log
test     *.log

Прежде всего, Трещина функция создает объект со всеми строками, которые появляются между разделенным символом. Вы должны получить доступ к одному элементу собственности, используя $variable[x], где x - это позиция нужного вам элемента. В вашем случае вам придется позвонить $filename[0]. (Первый элемент не 1, он начинается с 0)

Во-вторых, я не могу объяснить почему, но если вы используете метод split, как вы, то каждый отдельный символ будет обрабатываться как возможный разделитель. Вот почему 'pmdasdfgpmd.dmp'.split(".dmp") вернется asdfg - так же, как если бы вы использовали отделка. Но если вы используете такую ​​функцию:

'pmdasdfgpmd.dmp' -split".dmp"

он вернет имя файла без расширения: pmdasdfgpmd

В-третьих, если вы хотите удалить часть строки, вы также можете использовать заменить метод и замените строку ничем:

либо

'test.dmp'.replace(".dmp","")

или

'test.dmp' -replace ".dmp"

Но это всего лишь базовая замена строк в PowerShell - самый простой способ получить имя файла без расширения - это любой способ, предложенный @PetSerAl:

[System.IO.Path]::GetFileNameWithoutExtension($dmpfile)

или вы звоните Get-Item PSFunction и используйте BaseName-Свойство:

(Get-Item $dmpfile).BaseName

В обоих случаях переменная $ dmpfile должна содержать полный путь к файлу, а не только имя файла.

Вы должны использовать Trim () вместо Split (). $filename = $dmpfile.Trim(".dmp")