¿Cómo elimino una parte del nombre de un archivo para un lote de archivos en Windows 8.1?

¿Cómo elimino una parte del nombre de un archivo para un lote de archivos en Windows 8.1?

Tengo muchos archivos en una carpeta, pero todos comienzan con una línea de números y están separados del nombre real del archivo por un "_".

Por ejemplo:

123123123_nombredearchivo.txt

456456456_nombredearchivo2.txt

789789789_nombredearchivo3.txt

Me imagino que puedes ejecutar algún tipo de comando para eliminar los caracteres antes de "_" y el propio "_".

¡Cualquier ayuda es muy apreciada!

Respuesta1

Si no se siente cómodo con PowerShell, es posible que desee echar un vistazo a utilidades gratuitas como: http://www.bulkrenameutility.co.uk/Download.php

Respuesta2

Si solo desea eliminar los caracteres de una lista, puede colocar lo siguiente en un archivo por lotes sustituyendo el directorio relevante en lugar dedirname

for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G

Produce dir /buna lista de directorio en formato simple (sin información de encabezado ni resumen). Indica delims=_que el guión bajo debe usarse como delimitador y indica tokens=2que desea lo que está después del guión bajo. VerPARA/Fpara obtener una explicación más completa sobre cómo utilizarlo FOR /Fen un archivo por lotes.

Pero si desea cambiar el nombre de los archivos sin los números y el guión bajo, en su ejemplo tiene dos archivos que producirían el nombre filename2.txtsi se eliminaran los números y el guión bajo. ¿Qué quieres que se haga en ese caso? ¿O tenía la intención de utilizar filename3.txt para el tercer archivo?

Si lo que sigue al guión bajo es un nombre único, puede usar lo siguiente para cambiar el nombre de los archivos, sustituyendo el directorio apropiado pordirectorio relevante:

set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H

En el caso anterior, el primer token, %%Ges lo que está antes del guión bajo y el segundo token, %%Hes lo que está después del guión bajo. Los volví a juntar para la operación de cambio de nombre y los precedí con el directorio ya que el comando de cambio de nombre usa la sintaxis RENAME [drive:][path]filename1 filename2.

Coloque un @echo offcomo primera línea en el archivo por lotes antes del setcomando, si no desea ver cada operación de cambio de nombre a medida que ocurre.

Respuesta3

powershell    
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}

powershell debería ser preferible en un Win8.

Respuesta4

PowerShell: suponiendo que es necesario cambiar el nombre de todos los archivos de la carpeta (como implica OP):

$Folder = 'c:\path\to\folder'
gci $Folder | Rename-Item -NewName { $_.Name.Split('_')[-1] }

información relacionada