Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: tonilogar en 24 Octubre 2009, 01:11 am



Título: VBScript leer un trozo de linea de texto de un fichero SOLUCIONADO
Publicado por: tonilogar en 24 Octubre 2009, 01:11 am
En este script doy la dirección de una carpeta y lo que necesito es la direccion de la carpeta anterior a la ultima.
Mexplico: doy la dirección:
L:\programacion\FICHEROS-FERFULL\ortofoto
y quiero la dirección:
L:\programacion\FICHEROS-FERFULL
como no se como hacerlo pues he creado un txt con la dirección y despues quiero leer la linea de derecha directorioFerFull=right(linea,9)="\ortofoto"

Pero mi sorpresa es que utilizando un msgbox.
 msgbox (directorioFerFull)
el msgbox me devuelve true....y no:
 L:\programacion\FICHEROS-FERFULL
que es lo que yo esperaba.
Pues eso hay alguna forma de hacerlo mas facil y si no es el caso porque no me lee la linea de texto y me devuelve true.



Aqui dejo el trozo del script.
Un saludo a todos

Código:
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("WScript.Shell")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "SELECCIONEU EL DIRECTORI ORTOFOTO:", 0, 0)
If objFolder Is Nothing Then
MsgBox("L'aplicacio s'ha cancelat")
 Wscript.Quit
     End If
     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'CREAR UN ARCHIVO TXT CON LA RUTA DE LAS ORTOFOTOS
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set var = fso.CreateTextFile(objFolder.self.path & "\variableobjFolder.self.path.txt", True)
var.writeline(objFolder.self.path)
var.close
     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'LEER LA RUTA DE ORTOFOTO PARA CONSEGUIR LA DIRECCION DE LOS FICHERO 'FERFULL
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set var = fso.OpenTextFile(objFolder.self.path & "\variableobjFolder.self.path.txt", 1)
linea=var.Readline
directorioFerFull=right(linea,9)="\ortofoto"
msgbox (directorioFerFull)


Título: Re: leer un trozo de linea de texto de un fichero
Publicado por: Van Hohenheim en 24 Octubre 2009, 08:00 am
lo que pasa es que al hacer esto :

Código:
directorioFerFull=right(linea,9)="\ortofoto"

estas comparando:

 right(linea,9) con "\ortofoto"

que en este caso son lo mismo porque la función right toma la cantidad de caracteres desde la derecha, del texto que le envías como parámetro, es por esto que el valor true se guarda en la variable directorioFerFull.

Algo que puedes hacer es usar la función InstrRev que te devuelve la posición de una cadena dentro de otra, pero comenzando desde el final, un ejemplo usando tu caso:

Código:
ruta="L:\programacion\FICHEROS-FERFULL\ortofoto"
pos=instrrev(ruta,"\")
nruta=left(ruta,pos-1)
msgbox(nruta)

lo puse detallado para que se entienda :D, ruta guarda la ruta, pos guarda la posición de la primera aparición de "\", pero buscando desde el final de la cadena, nruta guarda el valor que le devuelve la función left, que toma la cantidad de caracteres,desde la izquierda, que le envías como parámetro (en este caso pos -1, es decir 14) de la cadena que también se le envía como parámetro (en este caso la ruta).

esto funciona para cualquier ruta que le envies, a menos que le envies una ruta como esta:

"L:\programacion\FICHEROS-FERFULL\ortofoto\", como tiene un "\" al final te devolverá "L:\programacion\FICHEROS-FERFULL\ortofoto", que al final sería lo mismo, para eso primero deberías poner una condición, pero creo que ya le estoy dando muchas vueltas al asunto, espero que me hayas entendido  :xD



Título: Re: leer un trozo de linea de texto de un fichero
Publicado por: tonilogar en 24 Octubre 2009, 14:25 pm
Gracias por tu tiempo y ayuda Van Hohenhein, al final siguiendo tu codigo lo he dejado asi.

Set ar = fso.OpenTextFile(objFolder.self.path & "\variableobjFolder.self.path.txt", 1)
linea=ar.Readline
pos=instrrev(linea,"\")
nlinea=left(linea,pos-1)

Un saludo


Título: Re: leer un trozo de linea de texto de un fichero
Publicado por: Novlucker en 24 Octubre 2009, 20:25 pm
Y aquí lo que te ahorrará muchas líneas  ::)

Código
  1. msgbox objfolder.parentfolder.self.path

parentfolder se utiliza justo para lo que buscas, mostrar la carpeta dentro de la cual esta una carpeta o archivo

Saludos


Título: Re: leer un trozo de linea de texto de un fichero
Publicado por: tonilogar en 24 Octubre 2009, 21:23 pm
Gracias Novlucker como tu dices me ahorrara muchas lineas.
Podrias echarle un vistazo a este hilo.

http://foro.elhacker.net/scripting/no_puedo_borrar_2_ficheros_intermedios-t271827.0.html

Gracias por tu ayuda si no fueras por ti no acabaria ni un script


Título: Re: VBScript leer un trozo de linea de texto de un fichero SOLUCIONADO
Publicado por: duckseven en 13 Junio 2011, 16:54 pm
Amigo yo tengo un pequeño problema, tengo un archivo de texto pero no se como puedo hacer para leer solo un pedaso de la linea de texto
Ejemplo
servername=SERVERS

Quiero que mi script solo lea el texto que esta despues de servername=
es decir quiero que me devuelva el texto SERVERS o el texto que este escrito en esa linea, agradezco de antemano tu ayuda eres un genio estuve leyendo algunos post pero no me queda claro, el script que estuve intentado ahcer no me funciono, te lo dejo aqui abajo gracias

*************************
Set objfso = createobject("scripting.filesystemobject")
Set archivotexto = objfso.opentextfile("servername.cdw",1)
archivotexto.skipline   
msgbox archivotexto.read(8)               
archivotexto.close
******************************