Eu tenho arquivos mp3 (com nomes de tamanhos diferentes) e quero remover os três últimos caracteres antes de ".mp3" para cada arquivo mp3 ao lado do arquivo de lote.
Por exemplo foobar043.mp3
, precisa se tornarfoobar.mp3
Isso parece simples, mas tentei muitas maneiras de fazer isso (com o PowerShell em um arquivo em lotes) e tentei fazê-lo apenas com comandos em lote - usando respostas já aqui no SuperUser.
Meu último comando foi o mais próximo, mas também remove a extensão do arquivo. Isso é encurtado apenas para o próprio comando:
gci *.mp3 | rename-item -newname { $_.name.substring(0,$_.name.length-7) }
Agora, se houvesse apenas alguma maneira de manter ".mp3" no final (ou renomear o arquivo agora sem extensão de volta para .mp3 sem renomear pastas também!) estaria funcionando bem.
As pessoas costumam pedir para listar o que já foi tentado, mas essa pergunta acabaria dez vezes mais longa! Coloque desta forma, se você digitar "powershell remover os últimos caracteres do nome do arquivo" no Google, tentei quase tudo o que encontrei até agora.
Apenas alguns exemplos tentando as respostas aceitas (e votadas):
- https://stackoverflow.com/questions/33255834/powershell-rename-filename-by-removing-the-last-few-characters
- https://stackoverflow.com/questions/57202742/how-to-remove-last-x-number-of-character-from-file-name
- https://stackoverflow.com/questions/29636714/remove-end-of-filename-using-powershell
- https://stackoverflow.com/questions/10396769/powershell-remove-last-3-characters-from-file-name
(juntamente com respostas sobre spiceworks e reddit que não vou vincular caso não seja permitido aqui).
Desde já agradeço a quem souber como fazer isso mantendo a extensão do arquivo.
É difícil porque, normalmente, eu seria capaz de definir o nome do arquivo (sem extensão) como uma variável, mas como o PowerShell renomeará o arquivo, essa variável se tornará inútil.
Veja se é isso que você quer:
Você está removendo os últimos 7 caracteres, então obviamente a extensão será removida. Você só deve substituir o
BaseName