Nombre de la carpeta actual (Ayuda)

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Nombre de la carpeta actual (Ayuda)

Mensaje 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...
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Nombre de la carpeta actual (Ayuda)

Mensaje 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!
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Re: Nombre de la carpeta actual (Ayuda)

Mensaje por melvinhn »

Justo lo que quería muchas gracias
Cada día se aprende mas en este maravilloso programa que es autoit
:smt024
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Nombre de la carpeta actual (Ayuda)

Mensaje 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.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder