From 2aac42852503b2afabb87b87870e970c9cdd0d6a Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 18 Feb 2017 16:11:01 +0100 Subject: [PATCH] Replace Scripting.FileSystemObject MoveFile with Win32API equivalent --- FileName_Caps/Filename_caps.pj2 | 4 +-- FileName_Caps/Filename_caps.pjt | Bin 8399 -> 9001 bytes FileName_Caps/Filename_caps.pjx | Bin 1583 -> 1583 bytes FileName_Caps/filename_caps.prg | 56 ++++++++++++++++++++++++-------- Normalize_FileNames.vbs | 8 +++-- filename_caps.exe | Bin 30137 -> 30585 bytes 6 files changed, 51 insertions(+), 17 deletions(-) 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 70611661327bbbc91aca8b7c5e36461fc7710ebd..59df1e2e38c0bad22fb15f2c8ba3a2fa6699c0cd 100644 GIT binary patch delta 1749 zcmah~Yitx%6h3!$c4lWEbi0r4i!NK1QXviW#iJXEOlN1?t=rvpIz=>1nx$QE4W-a7 zh!2A09~yt)4MzE8{e_sAH2cFuLo_1smm#G|BMA{3O^Ak|5YuI|-Kl402`^2&lRI-B z-#z!7bI-YRP5dmu0z|hIZwYIJnwahMiV!Gfm|Gm_qT7Ym{-*KR=tOQNJ9=>H=Z<72b7SM#qcebm;QU`8ofDdhH-%<%_gO3A*{iNmU_C>aHLM&IRBDM|(l+T3JM`uXsq9Qao}QkXeio*6 z>KF$krlu#eg@N46O!m;fY%TD$XUVSJm-4&&`U9C)rP_H}E+(rywg8?K}jfJolLa+w~l2r0SsR2gm z9@nmhuNln+&8sB_Dg+XB)w20E(G+?w=%aHkiTRSDeeTyuk$&rbmAz}y_81z;6KDP~ z(X*cK$s087Z70X+JKjy~F|(G?^~GgR!+*+XJDf!Zmwp=dPc(@jKxAaK#9y=4S@Cv-{;!5CLzpf$qP_TZ!kjHAXh0axKsb2xt_7vYRJ zHzN8mAPQVn^XNG!nPCj8tX;3NvvzuU{Rm@m&<%}259`pJ2Eq<=R@C0LYg=&h20GsO zJlRA)X}ohft;p)*u6nwSuoL$uRVfpfu@iYPuBvo~hliJx1ycIzl$=ItuxBKZkd
gJS6Ya5P!L%M9QzGEerg40De80Cqq-BQjm41=0!gggD42W5F;?N3`(7=O-b@9jG+w3PO?^c5Dy0LyTjBbs@+v>VBw+IDk^RnnC*uR>R$iSvah zCdTPv40|+YA6c>wd{_+h^FFxklZgTTfca%hjAEjDkPTzriFSHCNJI8rMkJx#at>ZcO zFuRGLyL;GLjT&h)bw8&OiH4`yy)ecfFZhSHLJPYDd@YjRM zL^^4N$>iC1V&Zh%0ORqDJaIa0fOsmEOid*XFd0v$<&$yT3Wfb2$0Kc{%3cm_RV4ZyoifIE@xy-g+3Cr(1?q!tcN~CL>+aI^mCju@x>ugvl@lS78LMgTss;MchZ- zW`J{HfEWe;grs4jr$*}`(&>N5tJ&N_S)I-0%Zu6Bi^>+(Hx-+&~IUO-w*yTKo(QZ9uF5G{w?n@*7rX0BHgpw*UYD 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 4ecf2fa9fa8facdeacbe549aa0ba47d3152e8808..93cf86cb8f9a2c8b71e61c80f7e1bd0f39965842 100644 GIT binary patch delta 1733 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