Page 1 of 2

Restaurar Icono de Carpeta Predeterminado

Posted: 27 Feb 2022, 12:43
by cilniani
Hola a todos.

Necesito restaurar a predeterminado el icono de muchas carpetas en el explorador de Windows. La forma "manual" de hacerlo es pulsar botón derecho sobre la carpeta, pulsar "propiedades", pulsar "personalizar", y pulsar "Restaurar Predeterminado". Como veis, un largo camino. He tratado de seleccionar todas las carpetas cuyo icono quiero restaurar a predeterminado, y hacerlo de forma "manual" como he descrito antes, pero lamentablemente solo cambia la última carpeta seleccionada.

¿Sería posible crear un script que restaure a predeterminado el icono de todas las carpetas que estén seleccionadas pulsando, por ejemplo, Ctrl + Alt + R ?

Saludos, y gracias de antemano.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 01 Mar 2022, 10:07
by Lepes
Cuando personalizas la carpeta, dentro se crea un archivo llamado "desktop.ini", oculto, dale arriba en la carpeta a vista > elementos ocultos para visualizarlo.

Si abres el archivo con el bloc de notas, puedes ver lo que hace (guarda la última forma de ver la carpeta, la imagen asociada, etc)
Si borras ese archivo, que siempre se llama igual, y que estará en cada carpeta personalizada, se "resetea todo" de esa carpeta.
Si quieres mantener una cosa pero borrar otra, tienes que abrir ese archivo y borrar la línea que quieras, por ejemplo.


En realidad, no tienes que complicar tanto la tarea, enviando el comando de ms-dos: del /s /a:h desktop.ini
borrará ese archivo oculto desde la carpeta en que estés y todas las subcarpetas.

Yo le doy al icono de windows (el de abrir el menú con los programas) con el botón derecho, ahí tienes la opción "símbolo del sistema (administrador)"
ahora navegas hasta la carpeta donde quieres ejecutar el comando:
- para cambiar de disco duro pones la unidad y dos puntos, por ejemplo así: d: (pulsas intro)
- para ir entrando en las carpetas escribes "cd" y las primeras letras, la tecla tabulador permite completar el nombre de cada carpeta: cd Micarpe

cuando estés en la carpeta, lanzas el comando ese de arriba.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 03 Mar 2022, 15:37
by cilniani
Muchas gracias por tu respuesta, pero borrar el archivo desktop.ini no me solucionaría el problema. Me explico, estoy usando un programa llamado icomancer para personalizar los iconos de mis carpetas. El programa crea un archivo desktop.ini con el icono personalizado (el icono permanecerá inalterado incluso si copio la carpeta en otro lado, o en un USB, precisamente por dicho archivo desktop.ini). El problema es que la mayoría de mis carpetas no cambia de icono al crear el icono personalizado, permanece el icono anterior, pero he comprobado que si pulso en "restaurar predeterminado" en la pestaña personalizar de la ventana propiedades, el icono personalizado ya puede verse.

Es por eso que no puedo eliminar el archivo desktop.ini, pues entonces desaparecería el icono personalizado.

Saludos, y de nuevo gracias por tu respuesta.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 11 Mar 2022, 12:06
by cilniani
Hola de nuevo. He creado este "rústico" script, pero seguro que hay alguna forma más fácil e inteligente de hacerlo. ¿Alguna idea?

Code: Select all

^i::

Send, !{enter}
sleep, 1000
Send, ^{Tab}
Send, ^{Tab}
Send, ^{Tab}
Send, ^{Tab}
Send, {Tab}
Send, {Tab}
Send, {Tab} {enter}
Send, {Tab}
Send, {Tab} {enter}

Return
Saludos y gracias.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 11 Mar 2022, 13:25
by cilniani
Una pregunta. Con éste script cambio a icono predeterminado la carpeta que he seleccionado, pero ¿cómo podría hacer para que el script se fuera ejecutando automáticamente, una a una, sobre todas las carpetas que tengo a la vista? Imagino que con Loop, pero llevo un rato investigando y no consigo entender como hacerlo funcionar.

Saludos y gracias.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 05 Jan 2024, 13:03
by Guest
Hola a todos. Revivo éste post por si a alguien se le ocurre como puedo hacer para que el script se ejecute en todas las subcarpetas de la carpeta activa. Saludos y gracias.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 05 Jan 2024, 18:46
by sofista
Hola: Quizás este script te funcione, al menos lo probé y anduvo bien en mi equipo. Y ya que estaba, reescribí el script de @cilniani en una función:

Code: Select all

SetTitleMatchMode, 2

myFolder := "D:\Pruebas\"                                          ; path/ruta de la carpeta activa
Loop, Files, %myFolder%*.*, DR
{
	Run, % "explorer /select," A_LoopFileFullPath                  ; Selecciona la carpeta en Explorer
	restaurarIcono(A_LoopFileFullPath)
}

restaurarIcono(folderPath) {
	Sleep, 1000
	Run, Properties %folderPath%                                   ; Abre Propiedades
	WinWait, Propiedades                                           ; parámetro corregido
	WinGet, hWnd, ID, A
	SendMessage, 0x1330, 4,, SysTabControl321, % "ahk_id " hWnd    ; Abre Personalizar
	ControlClick, Button5, % "ahk_id " hWnd                        ; Restaurar predeterminado
	Sleep, 1000
	ControlClick, Button8, % "ahk_id " hWnd                        ; Aceptar
}
Buen año.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 10:30
by Guest
Gracias. Pero no consigo que funcione. Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 11:14
by sofista
Hola: Para más ayuda, necesitaría que subas el código tal cual lo usaste —encerralo entre las etiquetas "code" para que se visualice correctamente— y que indiques qué funcionó —por ejemplo, si abrió la ventana de propiedades, etc.— y qué no. ¿Cambiaste la ruta a la carpeta activa? ¿Qué funcionaba y qué no del script anterior?

El script lo desarrollé en Windows 10, interfaz en español, AutoHotkey v1.1.37.01, cualquier otra versión puede generar un error.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 11:44
by cilniani
Gracias. Éste es el código que usé:

Code: Select all

^m::

SetTitleMatchMode, 2

myFolder := "N:\Pruebas"                                          ; path/ruta de la carpeta activa
Loop, Files, %myFolder%*.*, DR
{
	Run, % "explorer /select," A_LoopFileFullPath                  ; Selecciona la carpeta en Explorer
	restaurarIcono(A_LoopFileFullPath)
}

restaurarIcono(folderPath) 
{
	Sleep, 1000
	Run, Properties %folderPath%                                   ; Abre Propiedades
	WinWait, Propiedades de 
	WinGet, hWnd, ID, A
	SendMessage, 0x1330, 4,, SysTabControl321, % "ahk_id " hWnd    ; Abre Personalizar
	ControlClick, Button5, % "ahk_id " hWnd                        ; Restaurar predeterminado
	Sleep, 1000
	ControlClick, Button8, % "ahk_id " hWnd                        ; Aceptar
}
Cambié la ruta de la carpeta (aunque la idea es que funcione con la carpeta, y sus subcarpetas, que tenga señalada, y no indicar expresamente la carpeta en el código). Cuando ejecuto a veces abre una nueva ventana del explorador, a veces abre la ventana propiedades y a veces no hace nada (al menos nada que yo vea). Tengo Windows 10, pero no sé que versión de AutoHotkey ¿cómo puedo saber que versión es?

Saludos, y de nuevo gracias.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 14:09
by sofista
Hola: Bien, una de las cosas que quería verificar es la ruta de la carpeta. Como es una carpeta y no un archivo, a la ruta le falta la barra invertida final: "N:\Pruebas\". Probemos ahora si el código funciona de manera correcta y consistente.

Una vez solucionado esto, vemos el tema de la selección de la carpeta.

Hay implementada una constante para averiguar la versión de AutoHotkey:

Code: Select all

MsgBox, % A_AhkVersion

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 14:41
by cilniani
Gracias. Al poner la barra invertida lo que ocurre es que se abre una nueva ventana del explorador y a la vez la ventana de propiedades del primera subcarpeta de la carpeta "Pruebas", y ahí se queda. La versión de autohotkey que tengo es 1.1.33.02. Instalaré la última versión a ver que tal.

Saludos

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 14:44
by cilniani
He instalado la última versión. Pero sigue haciendo lo mismo: se abre una nueva ventana del explorador y a la vez la ventana de propiedades de la primera subcarpeta de la carpeta "Pruebas", y ahí se queda.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 14:45
by sofista
Sí, lo recomendable es usar siempre la última versión disponible.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 15:04
by cilniani
Parece que el error me da en la primera parte del código, la del loop, porque he probado la segunda parte, la de "restaurarIcono(folderPath)", y esa va bien, pero solo sobre la carpeta señalada.

Saludos y gracias.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 07 Jan 2024, 15:40
by sofista
Hola: Detecté un par de problemas, creo que los arreglé. También incorporé el código para procesar la carpeta seleccionada en el Desktop. Y, por las dudas, también verifica que el objeto seleccionado sea una carpeta.

Esperemos que funcione bien :)

Code: Select all

^m::
	myFolder := Explorer_GetSelection() "\"
	if !InStr(FileExist(myFolder),"D") {                           ; ¿Es una carpeta?
		MsgBox, % "Por favor, selecciona una carpeta."             ; Si no lo es,
		return                                                     ; termina el script.
	}
	Loop, Files, %myFolder%*.*, DR
	{
		restaurarIcono(A_LoopFileFullPath)
	}
return

restaurarIcono(folderPath) {
	Sleep, 1000
	Run, Properties %folderPath%                                   ; Abre Propiedades
	WinWait, Propiedades                                           ; parámetro corregido
	WinGet, hWnd, ID, A
	SendMessage, 0x1330, 4,, SysTabControl321, % "ahk_id " hWnd    ; Abre Personalizar
	ControlClick, Button5, % "ahk_id " hWnd                        ; Restaurar predeterminado
	Sleep, 1000
	ControlClick, Button8, % "ahk_id " hWnd                        ; Aceptar
	Send, {Enter}                                                  ; Se fuerza el cierre de la ventana
}

Explorer_GetSelection() {    ; teadrinker https://www.autohotkey.com/boards/viewtopic.php?t=60403
	WinGetClass, winClass, % "ahk_id" . hWnd := WinExist("A")
	if !(winClass ~="Progman|WorkerW|(Cabinet|Explore)WClass")
		Return
	
	shellWindows := ComObjCreate("Shell.Application").Windows
	if (winClass ~= "Progman|WorkerW")
		shellFolderView := shellWindows.FindWindowSW(0, 0, SWC_DESKTOP := 8, 0, SWFO_NEEDDISPATCH := 1).Document
	else {
		for window in shellWindows
			if (hWnd = window.HWND) && (shellFolderView := window.Document)
				break
	}
	for item in shellFolderView.SelectedItems
		result .= (result = "" ? "" : "`n") . item.Path
	if !result
		result := shellFolderView.Folder.Self.Path
	Return result
}

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 09 Jan 2024, 12:50
by cilniani
Hola. Sigue sin funcionarme. Al ejecutarlo se abre la ventana propiedades de la primera subcarpeta, pero ahí se queda. Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 09 Jan 2024, 15:29
by sofista
Hola: Qué raro, lo probé con tres carpetas y me funcionó sin problemas. Supongo, entonces, que ha de ser o bien un problema de interferencia o bien de timing, quizás el disco está lento.

Un reinicio del equipo no vendría mal. Luego, asegurarse de que no haya ningún otro script en ejecución. Si haciendo así, sigue sin funcionar, habría que alargar y/o intercalar Sleeps en la función restaurarIcono(), fundamentalmente justo antes de Send, {Enter}. Es cuestión de experimentar un poco hasta encontrar la solución. Cada equipo es un mundo aparte.

Por otra parte, podrías verificar que se lean correctamente todas las carpetas contenidas en la carpeta seleccionada, con el siguiente código:

Code: Select all

^m::
	myFolder := Explorer_GetSelection() "\"
	if !InStr(FileExist(myFolder),"D") {                           ; ¿Es una carpeta?
		MsgBox, % "Por favor, selecciona una carpeta."             ; Si no lo es,
		return                                                     ; termina el script.
	}
	Output := ""
	Loop, Files, %myFolder%*.*, DR
	{
		Output .= A_LoopFileFullPath "`n"
	}

MsgBox, % Output    ; muestra la ruta de todas las carpetas contenidas en la carpeta seleccionada.
return

Explorer_GetSelection() {    ; teadrinker https://www.autohotkey.com/boards/viewtopic.php?t=60403
	WinGetClass, winClass, % "ahk_id" . hWnd := WinExist("A")
	if !(winClass ~="Progman|WorkerW|(Cabinet|Explore)WClass")
		Return
	
	shellWindows := ComObjCreate("Shell.Application").Windows
	if (winClass ~= "Progman|WorkerW")
		shellFolderView := shellWindows.FindWindowSW(0, 0, SWC_DESKTOP := 8, 0, SWFO_NEEDDISPATCH := 1).Document
	else {
		for window in shellWindows
			if (hWnd = window.HWND) && (shellFolderView := window.Document)
				break
	}
	for item in shellFolderView.SelectedItems
		result .= (result = "" ? "" : "`n") . item.Path
	if !result
		result := shellFolderView.Folder.Self.Path
	Return result
}

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 12 Jan 2024, 11:08
by cilniani
Hola. Lo he intentado con otro ordenador, pero sigue sin funcionarme. Gracias en cualquier caso.

Saludos.

Re: Restaurar Icono de Carpeta Predeterminado

Posted: 12 Jan 2024, 15:17
by sofista
Hola: Bueno, una pena que no te funcionara, no le encuentro explicación al fallo, aparte de lo comentado antes. Por ahora no se me ocurre nada más, ya que no obtuve respuestas de los últimos tests que te sugerí. Quizás a alguien más se le ocurra alguna otra idea.

Por si decidís volver a usar el código que publicaste en Feb/22, una manera de simplificarlo es la siguiente:

Code: Select all

^i::
	Send, !{enter}
	Sleep, 1000
	Send, ^{Tab 4}
	Send, {Tab}
	Loop, 2 {
		Send, {Tab}
		Send, {Tab} {enter}
	}
Return
Suerte!