Powershell divide a variável sem nova linha ou espaços

2

Estou tentando dividir o nome do arquivo sem extensão e atribuí-lo a uma nova variável. Mas a função .split ('') adiciona novos espaços em branco ou tabulações. Alguma sugestão para corrigir isso?

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

ls $filename*.log
no output.............
echo $filename*.log
test     *.log
    
por user 12.11.2018 / 07:36

2 respostas

1

Em primeiro lugar, a função split cria um objeto com todas as strings que aparecem entre o caractere de divisão. Você precisa acessar um único item da propriedade usando $variable[x] , em que x seria a posição do item desejado. No seu caso, você teria que chamar $filename[0] . (Primeiro item não é 1, começa com 0)

Em segundo lugar, não posso explicar realmente por que, mas se você usar o método string dividido como você fez, cada caractere será tratado como possível delimitador. É por isso que 'pmdasdfgpmd.dmp'.split(".dmp") retornará asdfg - como se você usasse trim . Mas se você usar a função assim:

'pmdasdfgpmd.dmp' -split".dmp"

retornará o nome do arquivo sem extensão: pmdasdfgpmd

Em terceiro lugar, se você quiser remover uma parte de uma string, você também pode usar o método replace e substituir a string por nada:

ou

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

ou

'test.dmp' -replace ".dmp"

Mas isso é apenas uma substituição básica de strings no powershell - a maneira mais fácil de obter o nome do arquivo sem extensão é a maneira como o @PetSerAl propôs:

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

ou você chama o% p_de% PSFunction e usa o Get-Item -Property:

(Get-Item $dmpfile).BaseName

Em ambos os casos, a variável $ dmpfile deve conter o caminho completo para o arquivo, não apenas o nome do arquivo.

    
por 12.11.2018 / 08:36
0

Você deve usar Trim () em vez de Split (). $filename = $dmpfile.Trim(".dmp")

    
por 12.11.2018 / 07:51

Tags