Copiar la ruta del explorador con separaciones entre los nombres de las carpetas

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Copiar la ruta del explorador con separaciones entre los nombres de las carpetas

13 Mar 2021, 08:07

Hola a todos.

Estoy usando este script para copiar la ruta del explorador, pero únicamente de las tres últimas carpetas del árbol de carpetas:

Code: Select all

ControlGetText, ruta, ToolbarWindow323, A
    posición := InStr(ruta, "\", CaseSensitive := false, StartingPos := -1, Occurrence := 3)
    ruta :=  SubStr(ruta, posición+1) ;
    Clipboard := ruta
El problema es que, aunque copia correctamente la ruta de carpetas, lo hace con el nombre de todas las palabras juntas, es decir, si tengo una ruta del tipo "carpeta 1"-"carpeta 2"-"carpeta 3", el resultado es del script es "carpeta 1carpeta 2carpeta 3". Lo que yo quisiera es que el nombre de cada carpeta estuviera separado por un espacio y un guión de ésta forma "carpeta 1 - carpeta 2 - carpeta 3".

¿Es posible hacerlo?

Saludos y gracias.
sofista
Posts: 666
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Copiar la ruta del explorador con separaciones entre los nombres de las carpetas

13 Mar 2021, 09:48

Sí, es posible. La forma más sencilla que se me ocurre es usar StrReplace. Demo:

Code: Select all

ruta := "C:\Program Files\Carpeta 1\Carpeta 2\Carpeta 3"
posición := InStr(ruta, "\", CaseSensitive := false, StartingPos := -1, Occurrence := 3)
MsgBox, % StrReplace(SubStr(ruta, posición+1),"\"," - ")

; Output:

; Carpeta 1 - Carpeta 2 - Carpeta 3
w0z
Posts: 230
Joined: 19 Jun 2014, 08:21

Re: Copiar la ruta del explorador con separaciones entre los nombres de las carpetas

14 Mar 2021, 08:58

Example:
con array

Code: Select all

F1::
	ControlGetText, ruta, ToolbarWindow323, A
	folder_array := StrSplit(ruta, "\")
	Resultado := folder_array[folder_array.MaxIndex()-2] " - " folder_array[folder_array.MaxIndex()-1] " - " folder_array[folder_array.MaxIndex()]

	MsgBox, % Resultado
Return
PD. Trata de no definir las variables con tildes ya que tienden a veces a dar errores.
If I was helpful consider Donate me. :beer: , plz :D

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 26 guests