Preciso extrair o nome e a extensão do arquivo de, por exemplo, my.file.xlsx. Não sei o nome do arquivo ou extensão e pode haver mais pontos no nome, então preciso pesquisar a string da direita e quando encontrar o primeiro ponto (ou o último da esquerda), extrair a parte no lado direito e a parte do lado esquerdo desse ponto.
Talvez haja solução melhor, mas não encontrei nada aqui ou em qualquer outro lugar. Obrigado
.net
powershell
powershell-2.0
culter
fonte
fonte
Respostas:
Se o arquivo estiver saindo do disco e como outros declararam, use as propriedades
BaseName
eExtension
:Se você receber o nome do arquivo como parte da string (digamos, vindo de um arquivo de texto), eu usaria os métodos estáticos
GetFileNameWithoutExtension
eGetExtension
da classe System.IO.Path :fonte
[System.IO.Path] | Get-Member -Static
[System.IO.Path]::GetExtension
retorna a extensão incluindo o ponto (".") .fonte
Se for de um arquivo de texto e um arquivo de nome presumido estiverem cercados por espaços em branco, esta é uma maneira:
Se for um arquivo, você pode usar algo assim com base em suas necessidades:
fonte
fonte
Verifique as propriedades BaseName e Extension do objeto FileInfo.
fonte
Usar caminho dividido
fonte
Split(".")[-1]
para fazê-lo funcionar com arquivos com pontos no nomeapenas faça:
fonte
$file.Basename
Esta é uma adaptação, se alguém estiver curioso. Eu precisava testar se o RoboCopy copiou com sucesso um arquivo para vários servidores quanto à sua integridade:
Agradável e simples, e mostra o diretório e o arquivo dentro dele. Se você quiser especificar um nome de arquivo ou extensão, basta substituir os * pelo que desejar.
fonte
A partir do PowerShell 6.0,
Split-Path
tem um-Extenstion
parâmetro. Isso significa que você pode fazer:ou
Para
$path = "test.txt"
ambas as versões vai voltar.txt
, incluindo o ponto final.fonte