Directorio Padre De Otro Directorio


Objetivo: Directorio Padre De Otro Directorio
Hola a todos.

Estoy intentando obtener el directorio inmediatamente superior de un directorio dado.

File.Dir("/ruta/a/unarchivo.txt") me devuelve "/ruta/a/", el directorio que contiene al archivo "unarchivo.txt" pero... ¿Como se hace con un directorio?

Saludos.

Perfil MP  
Objetivo: Re: Directorio Padre De Otro Directorio
Tincho:

Citar:
Estoy intentando obtener el directorio inmediatamente superior de un directorio dado.


Puedes hacer esto:
RutaPadre= Mid$(RutaHijo, 1, RInStr(RutaHijo, "/"))

Objetivo: Re: Directorio Padre De Otro Directorio
Sólo por curiosidad, es posible utilizar la función externa "dirname( )" de la libreria libc.so.6.

Exemplum simplex:
Library "libc:6"

' char *dirname (char *__path)
' Return directory part of PATH or "." if none is available.
Private Extern dirname(__path As String) As String


Public Sub Main()

Dim s As String

s = dirname("/dev/snd")

Print s

End

Perfil MP  
Objetivo: Re: Directorio Padre De Otro Directorio
Bueno de momento hice esta funcion.

Public Function DirParent(strPath As String) As String ''Devuelve el directorio padre de otro que se pasa como parámetro.

Dim strParent As String
Dim intLast As Integer

If strPath <Then> 1 Then
If String.Right(strParent) = "/" Then
strParent = String.Mid(strParent, 1, String.Len(strParent) - 1)

Endif
Endif
Endif

If Exist(strParent) = False Then
strParent = "-1"
Else
If Stat(strParent).Type <> gb.Directory Then
strParent = "-1"
Endif
Endif

Return strParent

End


Saludos.

Perfil MP  
Objetivo: Re: Directorio Padre De Otro Directorio
Otra forma:
Padre=(split(mipath, "/")[Split(mipath, "/").Max - 1]


y otra (ésta para un path que incluya nombre de fichero):

Padre = File.Dir(File.Dir(mipath))


Sólo por liarla un poco más.

última edición por shordi el Martes, 04 Abril 2017, 08:19; editado 4 veces
Perfil MP  
Objetivo: Re: Directorio Padre De Otro Directorio
vuott escribió: [Ver mensaje]
Sólo por curiosidad, es posible utilizar la función externa "dirname( )" de la libreria libc.so.6.

Exemplum simplex:
Library "libc:6"

' char *dirname (char *__path)
' Return directory part of PATH or "." if none is available.
Private Extern dirname(__path As String) As String


Public Sub Main()

Dim s As String

s = dirname("/dev/snd")

Print s

End


excelente ejemplo!

Objetivo: Re: Directorio Padre De Otro Directorio
Hola a todos.

He recopilado todas la propuestas y las puse en un ejemplo para ver las diferentes maneras de hacer lo mismo.
Finalmente, me parece que la opción optima es:
File.Dir(strPath)

Debido a que, ademas de ser la mas simple, es una función gambas. Yo pensé que al pasarle un directorio a la función File.Dir esta no me lo reconocería como archivo y punto, pero se ve que trabaja tanto con un nombre de archivo como con un nombre de directorio.

Saludos.


ejemplo-ruta-de-directorio-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-ruta-de-directorio-0.0.1.tar.gz
Tamaño: 68.61 KB
Descargado: 29 veces
ejemplo-ruta-de-directorio-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-ruta-de-directorio-0.0.1.tar.gz
Tamaño: 68.61 KB
Descargado: 29 veces
ejemplo-ruta-de-directorio-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-ruta-de-directorio-0.0.1.tar.gz
Tamaño: 68.61 KB
Descargado: 29 veces

Perfil MP  
Objetivo: Re: Directorio Padre De Otro Directorio
Haberlo dicho... yo creí entender que lo que buscabas era el directorio "abuelo", es decir el directorio padre de un directorio...

Efectivamente file.Dir es lo correcto, como file.name te da el nombre

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4387s (PHP: -82% SQL: 182%)
Consultas SQL: 48 - Debug off - GZIP Activado