Renombrar con otro nombre

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Renombrar con otro nombre

Mensaje por yasmany »

Hola a todos, sucede que quiero hacer para que me renombre un archivo pero si existiera ya el archivo, el nombre sea otro aumentado un numero
Por ejemplo tengo una carpeta llamada [Carpeta Recuperada] y [Carpeta Varios] pero yo le quiero renombrar a [Carpeta Varios] como [Carpeta Recuperada] pero que se enumere que quede de la siguiente manera:
[Carpeta Recuperada]
[Carpeta Recuperada01]
y si quiero hacer lo mismo en otras carpetas tome un nuevo numero quedando asi:
[Carpeta Recuperada]
[Carpeta Recuperada01]
[Carpeta Recuperada02]
[Carpeta Recuperada03]
[Carpeta Recuperada04]

He intentado con Do Until pero no me funciona o estoy aplicando mal.
Alguna ayuda al respecto?
Como funcionaria para renombrar archivos?
Por ejemplo si quiero copiar un archivo .docx en donde ya existe otro con el mismo nombre. ¿como pudiera hacer para que se copie con un numero diferente?
Podrian Ayudarme con un buen ejemplo?
Gracias :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Renombrar con otro nombre

Mensaje por Dany »

Creo que hay una API o interface que hace eso. si son pocos archivos comprueba si existe el archivo.

Saludos
  • ............................................Imagen
    ......................................Imagen
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: Renombrar con otro nombre

Mensaje por PDF »

A ver si entendí...
Lo que quieres hacer es renombrar una carpeta cualquiera a "Carpeta Recuperada", y si ya existe una carpeta con ese nombre, se cambie el nombre a "Carpeta Recuperada1" y así sucesivamente, prueba esta función quizas debas corregir algo..

Código: Seleccionar todo

_RenameFolder("E:\Carpeta Varios","Carpeta Recuperada") ; Ejemplo llamada a la función_RenameFolder
Func _RenameFolder($sPath, $sNewName)
    Local $sDir, $sNr=1,$wName
    If StringRigth($sPath,1) ="\" then $sPath = StringTrimRigth($sPath,1)
    $sDir=StringLeft($sPath, StringInStr($sPath, "\", -1))
    $wName = $sDir & $sNewName
    While Not FileExists($wName)
        $wName = $sDir & $sNewName & $sNr
        $sNr += 1
    WEnd
    RunWait(@ComSpec&' /c REN '&$sPath&' '&$wName)
EndFunc ;==>_RenameFolder
Para renombrar los ficheros es cuestión de modificarlo un poco...

Saludos..
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Renombrar con otro nombre

Mensaje por yasmany »

Muchas gracias :smt026 , el día de ayer realice algo de code y si me funcionó, pero la secuencia va aumentando un numero mas al nombre pero bueno algo es algo.
Sucede que algunos virus crean una carpeta sin nombre, esta creación de carpeta sin nombre manualmente se hace con la combinación de ALT+0160 (crea un "espacio vacío" pero no se identifica como espacio, tiene una particularidad), bueno en si lo que quería hacer y ya lo realice en cierta forma era que una vez ejecutados los procesos de mi software y que identifique esta carpeta (que por cierto suelen estar los archivos personales,) le cambie de nombre a [Archivos Recuperados] y si ya existe este le aumente un numero.

No descarto tu ayuda y tu tiempo PDF, lo mio puede que sea muy rustico y estudiaré lo que hace tu code, que por cierto voy a necesitar implentar tu ayuda que me has brindado. Gracias :smt001

Código: Seleccionar todo

Local $unidad = "I:"
Local $name = "Archivos Recuperados"
Do
	If FileExists($unidad & "\" & $name) Then
		$name &= +1
		If FileExists($unidad & "\" & $name) Then
			$valor = StringRight($name, 1) + 1
			DirMove($unidad & "\ ", $unidad & "\" & "Archivos Recuperados" & $valor)
		Else
			DirMove($unidad & "\ ", $unidad & "\" & $name)
		EndIf
	Else
		DirMove($unidad & "\ ", $unidad & "\" & $name)
	EndIf
Until Not FileExists($unidad&"\ ")
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: Renombrar con otro nombre

Mensaje por PDF »

No hay de que..., un consejo con respecto a tu codigo, creo que en este caso seria mejor utilizar While...WEnd, porque este bucle comprueba al inicio la veracidad de la expresión y en el caso verdadero ya no ejecuta el codigo que sigue, para evitar errores,... y no es necesario comprobar varias veces si existe la carpeta, basta con otro bucle, mira este codigo modificado :smt024

Código: Seleccionar todo

Local $unidad = "I:"
Local $name = "Archivos Recuperados"
Local $i=1
While Not FileExists($unidad & "\ ") 
      While  Not FileExists($unidad & "\" &$name)
            $name="Archivos Recuperados"&$i
            $i+=1
      Wend
      DirMove($unidad & "\ ",$unidad & "\" & $name)
WEnd 
Saludos!
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Renombrar con otro nombre

Mensaje por BasicOs »

Código: Seleccionar todo

Por ejemplo si quiero copiar un archivo .docx en donde ya existe otro con el mismo nombre. ¿como pudiera hacer para que se copie con un numero diferente?
Algunos consejos..
El ejemplo anterior te vale. Solo que usa Filemove() porque te devuelve valores como el éxito de la operación facilmente.
Usa el punto o el punto y la extensión para separar el nombre con StringinStr() , (hay alguna función que lo hace también).
Haces un bucle como tienes y vas desde el 001 en adelante, y al último le sumas uno para el siguiente. Mira las funciones FILExx..
Te publicaré en unos dias un ejemplo programa que hace algo del estilo:
Este programa lo hice para cuando aparecen ficheros escaneados automáticamente en una carpeta del pc, y aviso que ya está listo el escaneo de un documento, y el usuario les cambia el nombre para tener algo organizado... :smt023 :smt041
Salu22:)
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Renombrar con otro nombre

Mensaje por yasmany »

Gracias chicos! por su ayuda... ando en unas pruebas de funcionalidad, EL LUNES ESTOY DE VUELTA. :smt001
:smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Responder