Restaurar Icono de Carpeta Predeterminado

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

Moderator: Flipeador

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

Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 27 Feb 2022, 12:43

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.
Lepes
Posts: 141
Joined: 06 May 2021, 07:32
Location: Spain

Re: Restaurar Icono de Carpeta Predeterminado

Post by Lepes » 01 Mar 2022, 10:07

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.
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 03 Mar 2022, 15:37

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.
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 11 Mar 2022, 12:06

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.
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 11 Mar 2022, 13:25

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.
Guest

Re: Restaurar Icono de Carpeta Predeterminado

Post by Guest » 05 Jan 2024, 13:03

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.
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 05 Jan 2024, 18:46

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.
Last edited by sofista on 14 Jan 2024, 16:40, edited 1 time in total.
Guest

Re: Restaurar Icono de Carpeta Predeterminado

Post by Guest » 07 Jan 2024, 10:30

Gracias. Pero no consigo que funcione. Saludos.
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 11:14

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.
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 11:44

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.
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 14:09

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
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 14:41

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
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 14:44

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.
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 14:45

Sí, lo recomendable es usar siempre la última versión disponible.
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 07 Jan 2024, 15:04

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.
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 07 Jan 2024, 15:40

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
}
Last edited by sofista on 14 Jan 2024, 16:41, edited 1 time in total.
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 09 Jan 2024, 12:50

Hola. Sigue sin funcionarme. Al ejecutarlo se abre la ventana propiedades de la primera subcarpeta, pero ahí se queda. Saludos.
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 09 Jan 2024, 15:29

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
}
cilniani
Posts: 39
Joined: 30 Oct 2020, 16:15

Re: Restaurar Icono de Carpeta Predeterminado

Post by cilniani » 12 Jan 2024, 11:08

Hola. Lo he intentado con otro ordenador, pero sigue sin funcionarme. Gracias en cualquier caso.

Saludos.
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Restaurar Icono de Carpeta Predeterminado

Post by sofista » 12 Jan 2024, 15:17

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!
Post Reply

Return to “Pedir Ayuda”