diff --git a/FileName_Caps/Filename_caps.pj2 b/FileName_Caps/Filename_caps.pj2 index 24e849d..083628f 100644 --- a/FileName_Caps/Filename_caps.pj2 +++ b/FileName_Caps/Filename_caps.pj2 @@ -25,7 +25,7 @@ _LegalCopyright = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/" _ProductName = "FILENAME_CAPS" _MajorVer = "2" -_MinorVer = "3" +_MinorVer = "4" _Revision = "0" _LanguageID = "" _AutoIncrement = "0" @@ -33,7 +33,7 @@ _AutoIncrement = "0" * -*<.HomeDir = 'c:\desa\filename_caps' /> +*<.HomeDir = 'c:\desa\foxbin2prg\filename_caps' /> FOR EACH loProject IN _VFP.Projects FOXOBJECT loProject.Close() diff --git a/FileName_Caps/Filename_caps.pjt b/FileName_Caps/Filename_caps.pjt index 7061166..59df1e2 100644 Binary files a/FileName_Caps/Filename_caps.pjt and b/FileName_Caps/Filename_caps.pjt differ diff --git a/FileName_Caps/Filename_caps.pjx b/FileName_Caps/Filename_caps.pjx index 96f0b1a..b47c25d 100644 Binary files a/FileName_Caps/Filename_caps.pjx and b/FileName_Caps/Filename_caps.pjx differ diff --git a/FileName_Caps/filename_caps.prg b/FileName_Caps/filename_caps.prg index 7c07146..c592838 100644 --- a/FileName_Caps/filename_caps.prg +++ b/FileName_Caps/filename_caps.prg @@ -45,19 +45,34 @@ RETURN lcFileName DEFINE CLASS cl_FileName_Caps AS Custom + PROCEDURE INIT + DECLARE INTEGER MoveFile IN KERNEL32.DLL STRING lpExistingFileName, STRING lpNewFileName + DECLARE INTEGER GetLastError IN KERNEL32.DLL + + * DOCUMENTACIÓN: https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx + DECLARE INTEGER FormatMessage IN KERNEL32.DLL INTEGER dwFlags, INTEGER lpSource, INTEGER dwMessageId ; + , INTEGER dwLanguageId, STRING @lpBuffer, INTEGER nSize, INTEGER Arguments + _SCREEN.AddProperty("ExitCodeFNC",0) + ENDPROC + PROCEDURE Capitalize LPARAMETERS tcFileName, tcFileMask, tcFileMaskType, tcLog, tlRelanzarError, tcDontShowErrors TRY LOCAL loEx AS EXCEPTION, laMasks(1,4), lcDefinition, lcFileDef, lcMaskDef, laLines(1), lcMenErr ; - , I, X, lcName, lcExt, lcPath, lcFileName, laFile(1,5), lcLogFile, lcSys16, lnPosProg ; - , loFSO AS Scripting.FileSystemObject + , I, X, lcName, lcExt, lcPath, lcFileName, laFile(1,5), lcLogFile, lcSys16, lnPosProg, lnRet + lnRet = 0 loEx = NULL - loFSO = CREATEOBJECT('Scripting.FileSystemObject') tcFileMaskType = EVL(tcFileMaskType,'M') lcFileName = tcFileName - lcLogFile = FORCEEXT(SYS(16),'LOG') + lcSys16 = SYS(16) + IF LEFT(lcSys16,10) == 'PROCEDURE ' + lnPosProg = AT(" ", lcSys16, 2) + 1 + ELSE + lnPosProg = 1 + ENDIF + lcLogFile = FORCEEXT( SUBSTR( lcSys16, lnPosProg ), 'LOG' ) tcLog = '' tcDontShowErrors = EVL( tcDontShowErrors, '0' ) @@ -66,13 +81,6 @@ DEFINE CLASS cl_FileName_Caps AS Custom tcLog = tcLog + CR_LF + '- No hay máscara definida ni archivo de configuración' EXIT && No se indicó nada que hacer ELSE - lcSys16 = SYS(16) - IF LEFT(lcSys16,10) == 'PROCEDURE ' - lnPosProg = AT(" ", lcSys16, 2) + 1 - ELSE - lnPosProg = 1 - ENDIF - tcFileMask = FORCEEXT( SUBSTR( lcSys16, lnPosProg ), 'CFG' ) tcLog = tcLog + CR_LF + '- Se usará el archivo de configuración [' + tcFileMask + ']' IF NOT FILE(tcFileMask) @@ -163,9 +171,19 @@ DEFINE CLASS cl_FileName_Caps AS Custom EXIT ENDIF ENDFOR + + *MESSAGEBOX( 'lcLogFile = ' + TRANSFORM(lcLogFile),0+4096, 'Error' ) IF ADIR( laFile, lcFileName, '', 1 ) > 0 AND laFile(1,1) <> JUSTFNAME(lcFileName) - loFSO.MoveFile( FORCEPATH( laFile(1,1), JUSTPATH(lcFileName) ), lcFileName ) + lnRet = MoveFile( FORCEPATH( laFile(1,1), JUSTPATH(lcFileName) ), lcFileName ) + *MESSAGEBOX('(MoveFile) lnRet = ' + TRANSFORM(lnRet),0+4096, 'Error') + + IF lnRet = 0 && Failed + lnRet = GetLastError() + *MESSAGEBOX('(GetLastError) lnRet = ' + TRANSFORM(lnRet),0+4096, 'Error') + ERROR 'MoveFile' + ENDIF + tcLog = tcLog + CR_LF + ' => Se renombrará a [' + lcFileName + ']' ELSE tcLog = tcLog + CR_LF + ' => No se renombrará a [' + lcFileName + '] porque ya estaba correcto.' @@ -173,6 +191,19 @@ DEFINE CLASS cl_FileName_Caps AS Custom CATCH TO loEx + _SCREEN.ExitCodeFNC = loEx.ErrorNo + + IF loEx.ErrorNo = 1098 && User defined error + IF LOWER(loEx.Message) == 'movefile' + * SE OBTIENE EL MENSAJE DE ERROR DEL SISTEMA CORRESPONDIENTE A GetLastError() + * FORMAT_MESSAGE_FROM_SYSTEM 0x00001000 + LOCAL lnRetLen, lpBuffer + lpBuffer = REPLICATE(CHR(0),256) + lnRetLen = FormatMessage(0x00001000,0,lnRet,0,@lpBuffer,256,0) + loEx.Message = LEFT(lpBuffer, lnRetLen) + ENDIF + ENDIF + IF tlRelanzarError THEN THROW ELSE @@ -190,7 +221,6 @@ DEFINE CLASS cl_FileName_Caps AS Custom ENDIF FINALLY - loFSO = NULL tcFileName = lcFileName *-- Si existe FileName_Caps.LOG, lo actualiza diff --git a/Normalize_FileNames.vbs b/Normalize_FileNames.vbs index 7162027..2aab863 100644 --- a/Normalize_FileNames.vbs +++ b/Normalize_FileNames.vbs @@ -48,7 +48,11 @@ Else Next If GetBit(nDebug, 4) Then - MsgBox "End of Process!", 64, WScript.ScriptName + If nExitCode = 0 Then + MsgBox "End of Process!", 64, WScript.ScriptName + Else + MsgBox "End of Process!", 48, WScript.ScriptName + End If End If End If @@ -93,7 +97,7 @@ Private Sub evaluateFile( tcFile ) MsgBox cCMD, 0, "PARAMETERS" Else nRet = oVFP9.DoCmd( cCMD ) - 'nExitCode = oVFP9.Eval("_SCREEN.ExitCode") + nExitCode = oVFP9.Eval("_SCREEN.ExitCodeFNC") End If End Sub diff --git a/filename_caps.exe b/filename_caps.exe index 4ecf2fa..93cf86c 100644 Binary files a/filename_caps.exe and b/filename_caps.exe differ