Restaurar Icono de Carpeta Predeterminado
Moderator: Flipeador
Restaurar Icono de Carpeta Predeterminado
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.
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
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.
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
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.
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
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?
Saludos y gracias.
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
Re: Restaurar Icono de Carpeta Predeterminado
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.
Saludos y gracias.
Re: Restaurar Icono de Carpeta Predeterminado
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
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:
Buen año.
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
}
Last edited by sofista on 14 Jan 2024, 16:40, edited 1 time in total.
Re: Restaurar Icono de Carpeta Predeterminado
Gracias. Pero no consigo que funcione. Saludos.
Re: Restaurar Icono de Carpeta Predeterminado
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.
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
Gracias. Éste es el código que usé:
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.
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
}
Saludos, y de nuevo gracias.
Re: Restaurar Icono de Carpeta Predeterminado
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:
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
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
Saludos
Re: Restaurar Icono de Carpeta Predeterminado
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
Sí, lo recomendable es usar siempre la última versión disponible.
Re: Restaurar Icono de Carpeta Predeterminado
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.
Saludos y gracias.
Re: Restaurar Icono de Carpeta Predeterminado
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
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.
Re: Restaurar Icono de Carpeta Predeterminado
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
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:
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
Hola. Lo he intentado con otro ordenador, pero sigue sin funcionarme. Gracias en cualquier caso.
Saludos.
Saludos.
Re: Restaurar Icono de Carpeta Predeterminado
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:
Suerte!
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