Tenho uma série de strings que são caminhos completos para arquivos. Gostaria de salvar apenas o nome do arquivo, sem a extensão do arquivo e o caminho inicial. Então, a partir disso:
c:\temp\myfile.txt
para
myfile
Na verdade, não estou iterando por meio de um diretório, caso em que algo como a basename
propriedade do powershell poderia ser usado, mas estou lidando apenas com strings.
file
powershell
directory
larryq
fonte
fonte
Respostas:
Existe um método .NET útil para isso:
fonte
Muito mais fácil do que pensei resolver o problema de exibir o caminho completo, diretório, nome do arquivo ou extensão do arquivo.
outras formas:
fonte
$csr = Get-ChildItem -Path "$($domain.FullName)/*.csr"
entãoWrite-Host "fileName: $($csr.Basename)"
Inspirado por uma resposta de @ walid2mi:
Observação: isso só funciona se o arquivo fornecido realmente existir .
fonte
ou
ou
fonte
você pode usar a propriedade de nome de base
fonte
@Keith ,
aqui outra opção:
fonte
Dada qualquer string de caminho arbitrário, vários métodos estáticos no objeto System.IO.Path fornecem os seguintes resultados.
A seguir está o código que gerou a saída acima.
Escrever e testar o script que gerou o acima revelou algumas peculiaridades sobre como o PowerShell difere de C #, C, C ++, a linguagem de script de comando do Windows NT e quase tudo o mais com o qual tenho alguma experiência.
fonte
A partir do PowerShell 6, você obtém o nome do arquivo sem extensão, assim:
fonte
Este script pesquisa em uma pasta e subpastas e renomeia arquivos removendo sua extensão
fonte
Expandindo a resposta de René Nyffenegger, para aqueles que não têm acesso ao PowerShell versão 6.x, usamos Split Path, que não testa a existência do arquivo:
Isso retorna " myfile.txt ". Se soubermos que o nome do arquivo não contém pontos, podemos dividir a string e pegar a primeira parte:
ou
Isso retorna " myfile ". Se o nome do arquivo incluir pontos, para ser seguro, poderíamos usar o seguinte:
Isso retorna " myfile.txt.config ". Aqui, prefiro usar Substring () em vez de Replace () porque a extensão precedida por um ponto também pode fazer parte do nome, como no meu exemplo. Ao usar Substring, retornamos o nome do arquivo sem a extensão conforme solicitado.
fonte
Aqui está um sem parênteses
fonte
Isso pode ser feito dividindo a string algumas vezes.
Aqui está o código sem comentários:
fonte