Necesito eliminar de mi List.txt todo lo que esté después de la extensión del archivo, manteniendo la extensión.
Intenté sin éxito utilizar los comandos de los enlaces:
cómo-usar-powershell-para-eliminar-espacio-del-final-de-una-línea
powershell-recortar-eliminar-todos-los-caracteres-después-de-una-cadena
Lista:
05 - Earth Wind and Fire - September (The Reflex Revision).mp3 -9,6
06 - Electric Light Orchestra - Last Train To London (Bootleg Extended Dance Remix).flac -9,1
08 - Kool & The Gang - Get Down On It (Soul Funk House Remix).wav -10,7
Lo que necesito:
05 - Earth Wind and Fire - September (The Reflex Revision).mp3
06 - Electric Light Orchestra - Last Train To London (Bootleg Extended Dance Remix).flac
08 - Kool & The Gang - Get Down On It (Soul Funk House Remix).wav
Probé el comando, pero sin éxito:
$content = Get-Content $files
$content | Foreach {$_.Substring(0, $_.IndexOf('.mp3', '.flac', '.wav' ))} | Set-Content $files
¿Cómo eliminar después de la extensión del archivo, manteniendo las extensiones?
Respuesta1
Según sus datos de muestra, parece que el enfoque más sencillo sería hacer coincidir la parte más consistente de cada cadena, el espacio en blanco y los números que siguen al nombre del archivo:
<WhiteSpace><MinusSign><OneOrMoreDigits><Comma><OneOrMoreDigits>
usando unexpresión regular:
'\s+\-\d+,\d+$'
con el-Replace
operador, que simplemente eliminará el texto coincidente si no se especifica ninguna cadena de reemplazo:
{ $_ -replace '\s+\-\d+,\d+$' }
Si el signo menos es opcional, sígalo con el One or none (?)
cuantificador:
$_ -replace '\s+\-?\d+,\d+$'