elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Página de elhacker.net en Google+ Google+


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderador: Eleкtro)
| | |-+  Renombrar archivos por lote segun caracter - batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Renombrar archivos por lote segun caracter - batch  (Leído 727 veces)
rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Renombrar archivos por lote segun caracter - batch
« en: 27 Agosto 2015, 21:39 »

Hola,

Quisiera cambiar una letra o letras del nombre de un archivo.
Ejem:
nuevoarchivo.txt a nue_archivo.txt

tengo este código, el cual se que le falta algo para cumplir con el propósito.

Código
  1. @echo off
  2. cls
  3. echo Renombrar nombre de archivo PI04...
  4. for %%i in (*.txt) do (set fname=%%~ni) & call :renamefile
  5. goto :eof
  6.  
  7. :renamefile
  8. ren "%fname%.txt" "%fname/vo/_%.txt"
  9. pause
  10. cls
  11. goto :eof

gracias por el apoyo.


« Última modificación: 27 Agosto 2015, 23:59 por rochro » En línea

Eleкtro
🌍 🕉️ 🛏️ Novato Astral 🛏️ 🕉️ 🌍 y...
Moderador Global
***
Desconectado Desconectado

Mensajes: 9.222


El sentido común es el menos común de los sentidos


Ver Perfil
Re: Renombrar archivos por lote segun caracter - batch
« Respuesta #1 en: 28 Agosto 2015, 11:31 »

El comando ren/rename como su propio nombre indica sirve para renombrar un archivo, no para realizar un reemplazo de caracteres selectivamente.

Batch es el peor lenguaje que puedes escojer para esta tarea, ya que la sustituición de caracteres es muy simple, se reemplazan todas las coincidencias que se encuentren, por ejemplo, teniendo este código:

Código
  1. Set "oldFilename=Nuevo archivo.txt"
  2. Set "newFilename=%oldFilename:vo=%"

El resultado sería: Nue archi.txt

Existe un soporte básico y primitivo para utilizar expresiones regulares con el comando FINDSTR con el cual podrías capturar la salida, pero tiene demasiadas limitaciones y no es un Regex estándar, por no tener no tiene soporte para grupos de capturas, ni nada útil.

Cambia a un lenguaje que soporte RegEx decentemente, por ejemplo VBS (aunque preferiblemente evita usar este limitado lenguaje también y en su lugar usa Ruby, Python, u otro), o usa herramientas de terceros como SED o FART en Batch, o como último recurso usa un búcle For /F, aunque no vale la pena seguir utilizando dicho lenguaje, es demasiado tedioso hacer cualquier cosa en el limitado Batch.

Ejemplo en VBS para reemplazar "nuevo archivo.txt" por "nue_archivo.txt":
Código
  1. set ws = WScript.CreateObject ("WScript.Shell")
  2. Set fs = CreateObject("Scripting.FileSystemObject")
  3. Set fpath = fs.GetFolder(ws.CurrentDirectory)
  4.  
  5. Set regEx = New RegExp
  6. with regEx
  7.    .Pattern = "vo\s"
  8.    .Global = True
  9.    .IgnoreCase = True
  10.    .MultiLine = False
  11. End With
  12.  
  13. replacement = "_"
  14.  
  15. For Each fspec In fpath.Files
  16.  
  17.    If UCase(fs.GetExtensionName(fspec.name)) = "TXT" Then
  18.  
  19.        Set matches = regEx.Execute(fspec.Name)
  20.        If matches.Count <> 0 Then
  21.  
  22.            leftPart  = Left(fspec.Name, matches(0).FirstIndex)
  23.            rightPart = Mid(fspec.Name, matches(0).FirstIndex + matches(0).Length + 1)
  24.  
  25.            fspec.Move fspec.ParentFolder & "\" & leftPart & replacement & rightPart
  26.  
  27.        End If
  28.  
  29.    End If
  30.  
  31. Next

Saludos


En línea


[/cent
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] renombrar archivos
Scripting
guidosl 3 7,711 Último mensaje 15 Marzo 2009, 05:03
por leogtz
Renombrar archivos [batch]
Scripting
Durango21 8 15,257 Último mensaje 28 Octubre 2009, 22:16
por corax
Programación batch (renombrar archivos)
Scripting
aaronezpino 4 4,444 Último mensaje 3 Febrero 2011, 23:42
por leogtz
[batch] copiar y renombrar archivos [resuelto]
Scripting
imlikeabird34 2 5,166 Último mensaje 27 Diciembre 2012, 15:19
por imlikeabird34
[batch] renombrar archivos desde una tabla
Scripting
romanjr55 0 259 Último mensaje 19 Mayo 2017, 21:38
por romanjr55
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines