ayuda con renombrar archivos

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
holas amigos del foro miren tengo un problema estoy trabajando en un proyecto de que almacena datos de usuarios tipo agenda los datos se guardan en un archivo Data.cvs, ya todo funciona ok pero ahora quiero aumentar una funcionalidad mas y es de backup y he intentado copiar el archivo y cambiarlo de nonbre (ej: el archivo original se llama Data.cvs pero una ves que le indique la ruta donde se guardara el archivo que se llame por ejemplo backup2011/03/09) y asi ya lo logre casi todo como les digo solo falta que una vez que el archivo ya este digamos en el directorio donde guardo mis copias de seguridad lo cambie de nombre por el nonbre qe les digo "backup2011/03/09"
este es el codigo que estoy utilizando:
boton browse
filename = "copia"--"Backup"..fecha..hora
save = Dialog.FolderBrowse("Por favor seleccione una ubicación", _DesktopFolder);
if save~= "CANCEL" then
Input.SetText("txtruta",save);--.."Backup"..fecha..hora);
Button.SetEnabled("btnsave", true);
end
y este es el codigo del boton save
fecha = System.GetDate(DATE_FMT_US);
hora = System.GetTime(TIME_FMT_MIL);
ruta = Input.GetText("txtruta");
File.Copy("AutoPlay\\Docs\\Data.cvs", ruta, true, true, false, true, nil);
File.Rename(ruta.."\Data.cvs", "Backup"..fecha..hora);
result = Dialog.Message("Copia de seguridad", "Datos guardados correctamente...", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
saludos
El ordenador no permite usar "\", "/" o ":" como nombre de archivo por lo que seguramente el problema sea ese.

yo tengo un programa de gestión de prestamos al que le puse copia de seguridad al salir y el código era este:
if Folder.DoesExist(_SourceFolder.."\\backup") == false then Folder.Create(_SourceFolder.."\\backup"); end
local archivo = System.GetDate(DATE_FMT_ISO).." - "..System.GetTime(TIME_FMT_MIL);
archivo = String.Replace(archivo, "/", "-", false);
archivo = String.Replace(archivo, ":", "-", false);
Zip.Add(_SourceFolder.."\\backup\\"..archivo..".zip", {dbasefile}, false, "", 9, nil);
Donde dbasefile es el archivo del que quieres hacer copia que en tu caso es Data.cvs y el resultado sería "2011-02-01 - 18-24-46.zip".

Con esto consigues varias cosas, entre ellas están:
  • Comprimes el archivo por lo que el Backup ocupa menos
  • Al ser comprimido mantiene dentro el nombre original por lo que si quieres restaurar solo tienes que extraerlo y no tienes que andar renombrando nada.
Tendrías que modificarlo a tu gusto ya que yo lo que hacía era crear una carpeta backup y crear dentro los archivos ZIP.
También puedes modificar el nombre, pero te recomiendo mantener el formato "Año-Mes-Día - Hora-Min-Sec" ya que así están ordenados por fecha.

Saludos y espero que te sirva ;)
Hola Daniel_Lechu me parece interesante lo que me explicaste estuve tratando de entender el codigo y si entendi lo primero lo que no me funciona y no le logro aun entender es:
Zip.Add(_SourceFolder.."\\backup\\"..archivo..".zip", {dbasefile}, false, "", 9, nil);
hasta donde entendi ese codigo es que la primera linea evalua si existe la carpeta "backup" y si no existe la crea
ahora se declara una variable local de nombre "archivo" la que almacena las variables de fecha y hora
luego a archivo se le covierte los simbolos / y : en -
bien hasta ahi todo bien el problema es con esa linea de arriba:
se supone que "ZipFile" es la ruta donde se encuentra el archivo a coprimir y el nombre que se le dara al archivo comprimido
ahora "Files" se supone que es la especificacion del archivo a comprimir en este caso dbasefile
en estos dos puntos confundiendo
no se si lo podrias revisarlo y derrepente me puedas explicar como comprimir un archivo con zip nada mas sin cambiarle el nombre, solo que comprima que mantenga su nombre original por el momento ya cuando domine hare que cambie el nombre
gracias y saludos
El código tiene dos variables, que son:
_SourceFolder.."\\backup\\"..archivo..".zip" y {dbasefile}

_SourceFolder.."\\backup\\"..archivo..".zip": es el nombre del archivo zip, que con el código descrito arriba sería la fecha y hora y seguida de la extensión "zip"

{dbasefile}: es una variable que utilizo yo en mi programa para referirme al archivo de Base de datos ya que la ruta y nombre las carga desde un archivo ".ini". Se supone que tiene que ser una tabla pero para acortarlo se hace así, por ejemplo:

Creando tabla:
dbasefile = {}
dbasefile[1] = "basedatos.db"
Zip.Add(_SourceFolder.."\\backup\\"..archivo..".zip", dbasefile, false, "", 9, nil);
O
dbasefile = {"basedatos.db"}
Zip.Add(_SourceFolder.."\\backup\\"..archivo..".zip", dbasefile, false, "", 9, nil);
Lo que para resumir y sin usar tabla se pone:
Zip.Add(_SourceFolder.."\\backup\\"..archivo..".zip", {"basedatos.db"}, false, "", 9, nil);
Que hace que la tabla sea lo que hay entre corchetes.

En tu caso sería así:
Zip.Add(_SourceFolder.."\\backup\\"..archivo..".zip", {_SourceFolder.."\\AutoPlay\\Docs\\Data.cvs"}, false, "", 9, nil);
Saludos y espero que se entienda si no me preguntas ;)
:num1: Gracias Daniel_Lechu me sirvio mucho el codigo :num1:
Me alegro de que te haya servido ;)