VBScript leer un trozo de linea de texto de un fichero SOLUCIONADO

Iniciado por tonilogar, 24 Octubre 2009, 01:11 AM

0 Miembros y 1 Visitante están viendo este tema.

tonilogar

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


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)

No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

Van Hohenheim

#1
lo que pasa es que al hacer esto :

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:


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


tonilogar

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
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

Novlucker

Y aquí lo que te ahorrará muchas líneas  ::)

Código (vb) [Seleccionar]
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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

tonilogar

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
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

duckseven

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
******************************