FoxPro/Visual FoxPro - Scripting.FileSystemObject -usar sin GETFILE()

 
Vista:
sin imagen de perfil

Scripting.FileSystemObject -usar sin GETFILE()

Publicado por Jorge Cromer (31 intervenciones) el 11/10/2016 00:42:34
Hola amigos, favor indicarme como puedo capturar el nombre de un archivo dentro de un directorio sin usar el GETFILE() para ser usado con Scripting.FileSystemObject . Tengo el sgte.codigo:

*En en C:/LISTA/LIBRO/ tengo 3 archivos texto : Ejm. le77720160900080100001111.txt, le77720160900080200001011.txt , le77720160900140100001111.txt
*(Originalmente eran archivos con nombre de 8 caracteres y fueron renombrados con RENAME de VFP 6.00, quedando con los nombres en minusculas antes indicados)

*En un Formulario con 2 cajas de Texto: text1 y text2 y un boto "convertir a Mayusculas" en el evento CLICK tengo este codigo:

DIA = "00"
MES = Thisform.text1. value
ANO = Thisform.text2. value

GNFILE =ALLTRIM("le")+ALLTRIM("777")+ALLTRIM(ANO)+ALLTRIM(MES)+ALLTRIM(DIA)+ALLTRIM("080100")+ALLTRIM("00")+ALLTRIM("1111")+".txt"
GNFILEV =ALLTRIM("le")+ALLTRIM("777")+ALLTRIM(ANO)+ALLTRIM(MES)+ALLTRIM(DIA)+ALLTRIM("080200")+ALLTRIM("00")+ALLTRIM("1011")+".txt"
GNFILERV =ALLTRIM("le")+ALLTRIM("777")+ALLTRIM(ANO)+ALLTRIM(MES)+ALLTRIM(DIA)+ALLTRIM("140100")+ALLTRIM("00")+ALLTRIM("1111")+".txt"

SET DEFAULT TO C:\LISTA\LIBRO\

*Para convertir letras minusculas a mayusculas
FSO = CreateObject("Scripting.FileSystemObject")
lcFile = GETFILE() &&Abre el cuadro de dialogo y selecciono el archivo deseado
FSO.MoveFile(lcFile,UPPER(lcFile))
FSO = NULL
*Fin de convertir

*El resultado: Ejm.: archivo le77720160900080100001111.txt queda como : LE77720160900080100001111.txt (todo ok)
*Pero si cambio el lcFile = GETFILE() por una macrosustitucion ejm.:


FSO.MoveFile(&GNFILE,UPPER(&GNFILE))

* El resultado: Ejm.: archivo le77720160900080100001111.txt queda como : le77720160900080100001111.txt (es decir queda igual)
* pero basta que cambie algo, como por ejemplo le quito el ".txt" a la variable GNFILE , entoces si cambia de minuscula a minuscula pero logicamente
* le quita los atributos de texto

Muy agradecido por sus comentarios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Scripting.FileSystemObject -usar sin GETFILE()

Publicado por Fidel José (657 intervenciones) el 12/10/2016 01:08:28
No entendí.
Si necesitar repetir el procedimiento para todos los archivos de una carpeta, utiliza la función ADIR()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
PROCEDURE Modify_fileName
*------------------------
*!* Parameters
*!*	tcFolder 	= Carpeta contenedora
*!*	tcExtension = Extensión de archivos (Default todas)
*!*	tcConvert	= "proper","upper","lower"
*!* -----------------------------------------------------
LPARAMETERS tcFolder,tcExtension,tcConvert
TRY
	LOCAL i,;
		lcFileSource,;
		lcFileTarget,;
		lcFile_Ext,;
		lcMessage,;
		lnFails,;
		lnFiles,;
		lnMoves,;
		loex AS Exception,;
		loFso AS Object,;
		loTRy AS Exception
 
 
	LOCAL ARRAY laFiles(1)
	lnMoves = 0
	lnFails = 0
	lnFiles = 0
	lcMessage = ""
 
	loFso = NEWOBJECT("Scripting.FileSystemObject")
 
	IF EMPTY(m.tcFolder) OR !loFso.FolderExists(m.tcfolder)
		tcFolder = GETDIR(FULLPATH(""),"Carpeta a convertir","Modify_FileName",48+64)
	ENDIF
	IF !EMPTY(m.tcFolder)
		lcMessage = "Folder_Source="+m.tcFolder + CHR(13)
		tcExtension = EVL(tcExtension,"*")
		tcConvert = LOWER(EVL(m.tcConvert,"proper"))
		IF !INLIST(m.tcConvert,"proper","upper","lower")
			tcConvert = "proper"
		ENDIF
		lnFiles = ADIR(laFiles,ADDBS(m.tcFolder)+"*."+m.tcExtension,"",1)
		FOR i = 1 TO m.lnfiles
			lcFileSource = ADDBS(m.tcFolder) + laFiles[i,1]
			lcFile_Ext= JUSTEXT(m.lcFileSource)
			lcFileTarget = FORCEEXT(ADDBS(m.tcFolder) ;
						+ ICASE(m.tcConvert=="lower",LOWER(laFiles[m.i,1]),;
						m.tcConvert=="upper",UPPER(laFiles[m.i,1]),;
						PROPER(laFiles[m.i,1])),	m.lcFile_Ext )
 
 
			loTry = null
			TRY
				loFso.MoveFile(m.lcFileSource,m.lcFileTarget)
				lnMoves = m.lnMoves + 1
			CATCH TO loex
				lnFails = m.lnFails + 1
			ENDTRY
 
		NEXT
		lcMessage = m.lcMessage ;
			+ "Files in Folder="+TRANSFORM(m.lnFiles) + CHR(13);
			+ "Files Moved = "+TRANSFORM(m.lnMoves) + CHR(13);
			+ "Move Failure = "+TRANSFORM(m.lnFails)
 
	ENDIF
 
 
CATCH TO loex
	loex.UserValue = PROGRAM()
	* ShowError(loex)  && mostrar el error
FINALLY
	loFso = null
	IF !EMPTY(m.lcMessage)
		MESSAGEBOX(m.lcMessage,0,PROPER(PROGRAM()))
	ENDIF
ENDTRY
ENDPROC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Scripting.FileSystemObject -usar sin GETFILE()

Publicado por Jorge Cromer (31 intervenciones) el 14/10/2016 21:31:06
Gracias Fidel Jose por tu valioso aporte, ya son varias veces que me sacas de apuros, nuevamente Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar