Página 1 de 1

Nombre de la carpeta actual (Ayuda)

Publicado: 07 Ene 2012, 07:05
por melvinhn
:smt021 Tengo el siguiente scrip en la siguiente ruta
C:\Program Files\Uno\Mi carpeta

y lo que quiero hacer es sacar el nombre de la carpeta actual donde me encuentro
se que se puede hacer con algo similar asi

Código: Seleccionar todo

ConsoleWrite(@ScriptDir&@CRLF)
pero el problema es que quisiera saber de que manera me podría salir solo la repuesta fuera "Mi carpeta"
y no toda la ruta...

Gracias de antemano...

Re: Nombre de la carpeta actual (Ayuda)

Publicado: 07 Ene 2012, 11:06
por arkcrew
Vale,

Me acabo de levantar fresco de ideas ;) mira esto que te acabo de programar y verás que te funciona:

Código: Seleccionar todo

$path = @ScriptDir
$ruta = StringSplit($path,"\")
msgbox(0,"",$ruta[UBound($ruta)-1])
Lo que hace es sacar las \ de la ruta y escoger el último resultado que es el de tu carpeta.

Salduos!

Re: Nombre de la carpeta actual (Ayuda)

Publicado: 07 Ene 2012, 22:37
por melvinhn
Justo lo que quería muchas gracias
Cada día se aprende mas en este maravilloso programa que es autoit
:smt024

Re: Nombre de la carpeta actual (Ayuda)

Publicado: 09 Ene 2012, 12:28
por Ximorro
Buena solución, sólo por diversión esta es otra manera con expresiones regulares.

$a = @ScriptDir
$b = StringRegExp($a, "^.*\\(.+)$", 1)
MsgBox(0,"",$b[0])


En este caso el vector resultante sólo tiene un elemento, el buscado.
En la expresión regular "*" por defecto toma todo lo que puede, con lo que consume los "\" intermedios, así que el literal antes del grupo capturado corresponde al último antes de la carpeta final.

También hay que decir que no es la más óptima, probablemente si decimos que la carpeta final es "todo lo que hay al final de la cadena pero que no sea un carácter "\" es más rápido, además no hay que anclarla al principio:
$b = StringRegExp($a, "[^\\]+$", 1)
Sí, esta creo que me gusta más.

La verdad es que esto de las expresiones regulares es un mundo.