Page 1 of 1

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

Posted: 13 Mar 2021, 08:07
by cilniani
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.

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

Posted: 13 Mar 2021, 09:48
by sofista
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

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

Posted: 14 Mar 2021, 08:58
by w0z
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.

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

Posted: 16 Mar 2021, 05:23
by cilniani
Perfecto. Muchas gracias.