PROCEDURE getfolder_toRename
*---------------------------
* Seleccionar una carpeta
* para renombrar archivos
* según el valor de tnFlag
* tnFlag: 0= no modifica 1=lower 2=Upper 3=Proper
* -----------------------------------------------------
LPARAMETERS tnFlag,tcExtension
TRY
LOCAL LOEX AS EXCEPTION,;
lcFolder,;
LCMESSAGE
lcFolder = GETDIR(FULLPATH(""),"Carpeta","Seleccione Carpeta",64)
IF !EMPTY(m.lcFolder)
Rename_Folder(m.lcFolder,m.tnFlag,m.tcExtension)
ENDIF
CATCH TO LOEX
LOEX.USERVALUE = PROGRAM()
gSHOWERROR(LOEX)
FINALLY
ENDTRY
ENDPROC
PROCEDURE Rename_Folder
*--------------------------------------------------------
* tcFolder: Carpeta
* tnFlag: 0= no modifica 1=lower 2=Upper 3=Proper
* tcExtension: Extensiones a seleeccionar (Default=todos)
*--------------------------------------------------------
LPARAMETERS tcFolder,tnFlag,tcExtension
TRY
LOCAL LOEX AS EXCEPTION,;
loFso as Object,;
LCMESSAGE,;
lnFiles,;
i,;
lResult,;
lcString,;
lcFileLog
LOCAL ARRAY laFiles(1)
lcString = "tnFlag = "+TRANSFORM(m.tnFlag)+CHR(13)+CHR(10)
lcFileLog = ADDBS(FULLPATH(""))+"Rename_Folder.log"
loFso = NEWOBJECT("Scripting.FileSystemObject")
DO WHILE .t.
IF VARTYPE(m.tcFolder)#"C" ;
OR EMPTY(m.tcFolder) ;
OR !loFso.FolderExists(m.tcFolder)
lcMessage = "Parámetro tcFolder erróneo"
EXIT
ENDIF
IF VARTYPE(m.tcExtension)#"C" OR EMPTY(m.tcExtension)
tcExtension = "*"
ENDIF
lnFiles = ADIR(laFiles,ADDBS(m.tcFolder)+"*."+m.tcExtension,"",1)
FOR i = 1 TO m.lnFiles
lcSource = ADDBS(m.tcFolder)+lafiles[i,1]
lcTarget = m.lcSource
loResponde = Get_Rename_Fso(m.lcSource,m.lcTarget,m.tnFlag,loFso,.t.)
IF VARTYPE(loREsponde) = "O"
lcString = m.lcString ;
+ "<file,name,"+CHR(34)+m.lcSource+CHR(34)+">";
+ "<rename>"+loREsponde.Target_file+"</rename>";
+ "<result>"+TRANSFORM(loResponde.REsult)+"</result>"+"</file>";
+ CHR(13) + CHR(10)
loREsponde = null
ENDIF
NEXT
STRTOFILE(m.lcString,m.lcFileLog)
EXIT
ENDDO
CATCH TO LOEX
LOEX.USERVALUE = PROGRAM()
gSHOWERROR(LOEX)
FINALLY
IF !EMPTY(LCMESSAGE)
MESSAGEBOX(M.LCMESSAGE,0,PROGRAM())
ENDIF
IF VARTYPE(loEx)#"O"
IF FILE(m.lcFileLog)
MODIFY FILE &lcFilelog NOEDIT
ENDIF
ENDIF
ENDTRY
ENDPROC
PROCEDURE Get_rename_fso
*------------------------
LPARAMETERS tcSource,tcTarget,tnFlag,toFso,tlRelanzarError
TRY
LOCAL LOEX AS EXCEPTION,;
loFso AS OBJECT,;
loResp as Object,;
loFsoErr as Exception,;
lExito,;
lcFileTarget,;
lcFolderTarget
loResp = NEWOBJECT("Empty")
ADDPROPERTY(loResp,"result",.f.)
ADDPROPERTY(loResp,"target_file",m.tcTarget)
IF VARTYPE(toFso)="O"
loFso = toFso
ELSE
loFso = NEWOBJECT("Scripting.FileSystemObject")
ENDIF
IF VARTYPE(m.tcTarget)#"C" OR EMPTY(m.tcTarget)
tcTarget = m.tcSource
ENDIF
IF VARTYPE(m.tnFlag)#"N"
tnFlag = 0
ENDIF
IF m.tnFlag > 3
tnFlag = 3
ENDIF
lcFileTArget = JUSTFNAME(m.tcTarget)
tcTarget = ADDBS(JUSTPATH(m.tcTarget));
+ ICASE(m.tnFlag=0,m.lcFileTarget,;
m.tnFlag=1,LOWER(m.lcFileTarget),;
m.tnFlag=2,UPPER(m.lcFileTarget),;
m.tnFlag=3,PROPER(m.lcFileTarget))
loresp.Target_file = m.tcTarget
TRY
IF loFso.fileExists(m.tcSource)
loFso.MoveFile(m.tcSource,m.tcTarget)
loResp.REsult = .t.
ENDIF
CATCH TO loFsoErr
THROW
FINALLY
ENDTRY
CATCH TO LOEX
LOEX.USERVALUE = PROGRAM()
gSHOWERROR(LOEX)
IF m.tlRelanzarError
THROW
ENDIF
FINALLY
loFso = null
toFso = null
ENDTRY
RETURN loResp
ENDPROC
*----------------------------------------------------
PROCEDURE gShowError
LPARAMETERS toExcep,tlNotShow,tcCaption
*-----------------------------------------------------
tcCaption=EVL(tcCaption,"Mensaje del Sistema")
SET HOURS TO 24
LOCAL lcMens
lcMens="Fecha "+TRANSFORM(DATETIME());
+ Chr(13)+"Mensaje: "+toExcep.message;
+ Chr(13)+"ErrorNo: "+TRANSFORM(toExcep.Errorno);
+ Chr(13)+"Llamada: "+toExcep.Uservalue
IF _vfp.StartMode=0
lcMens=lcMens+ Chr(13)+"Linea "+TRANSFORM(toExcep.lineno)
ENDIF
STRTOFILE(lcMens+ Chr(13)+REPLICATE("=",60)+ Chr(13),"Errors.log",1)
lcMens="Se ha producido un error:"+ Chr(13)+lcMens
IF !tlNotShow
MESSAGEBOX(m.lcMens,0,m.tcCaption)
ENDIF
ENDPROC