Ayuda batch

Páginas: (1/1)

Ronxs:

¿Cómo puedo abrir el Panel de Archivos Temporales con un bat?

hwpoison:

Cual sería ese panel?

Ronxs:

Cita de: hwpoison en 24 Marzo 2024, 18:51 pm
--
Cual sería ese panel?

--

Entras en el panel de control > Sistema > Almacenamiento > Archivos Temporales. Ahí te muestra varias opciones para eliminar archivos temporales que no aparecen en Temp o %Temp% Por eso quiero crear un script que se ejecute automaticamente.

Eleкtro:

Cita de: Ronxs en 24 Marzo 2024, 18:55 pm
--
Entras en el panel de control > Sistema > Almacenamiento > Archivos Temporales.
--

Lo más cerca que me parece que puedes llegar, es abriendo la página 'Almacenamiento' utilizando el siguiente comando:

Código:
--
start ms-settings:storagesense
--

La misma duda se formuló en el año 2020 en la comunidad de Microsoft, y a día de hoy sigue sin solución:

https://answers.microsoft.com/en-us/windows/forum/all/what-is-the-ms-settings-command-to-open-the/a81e60ec-af09-4cb0-8db4-b315ee21a69a

De todas formas, en la página 'Archivos Temporales' se reflejan los mismos elementos temporales que están disponibles en el 'liberador de espacio en disco', el cual puedes ejecutar con el siguiente comando, para la unidad C:

Código:
--
CLEANMGR /d C
--



O sin parámetros, para elegir la unidad:

Código:
--
CLEANMGR
--




También puedes configurar la limpieza automática.

Primero utiliza el siguiente comando para configurar (activar o desactivar las casillas de) los elementos que se deben eliminar de forma automática:
Código:
--
CLEANMGR /sageset:9999
--
(solo se requiere configurarlo una única vez)

Y para realizar la limpieza automática, utiliza este otro comando:
Código:
--
CLEANMGR /sagerun:9999
--

Más información: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cleanmgr

Aténtamente,
Elektro.


Eleкtro:

Ya que no parece existir un atajo integrado con "ms-settings:", me puse a desarrollar una solución alternativa:

Con la ayuda de herramientas de inspección (o spy) de ventanas (herramienta utilizada: Microsoft UI Inspect) averigué el identificador de automation del botón con texto "Archivos temporales" (Automation Id: "SystemSettings_StorageSense_Breakdown_12_Button") en la ventana UWP de la página del panel de control, y luego tan solo utilicé la infraestructura de UI Automation para automatizar la invocación del botón.

Dicho procedimiento lo he implementado en el siguiente script de PowerShell (esto no es algo que se pueda hacer en una herramienta tan limitada como Batch):

Archivos Temporales.ps1
Código
--
using namespace System.Windows.Automation
--
 
--
Add-Type -AssemblyName UIAutomationClient
--
 
--
Start-Process ms-settings:storagesense
--
 
--
$window = $null
--
while ($window -eq $null) {
--
   Start-Sleep -Milliseconds 500
--
   $window = [AutomationElement]::RootElement.FindFirst([TreeScope]::Children, `
--
       (New-Object PropertyCondition([AutomationElement]::NameProperty, "Configuración")))
--
}
--
 
--
# En este ejemplo obtengo el botón mediante el texto "Archivos temporales":
--
$buttonTemporaryFiles = $window.FindFirst([TreeScope]::Descendants, `
--
   (New-Object AndCondition (
--
       (New-Object PropertyCondition([AutomationElement]::ControlTypeProperty, [ControlType]::Button)),
--
       (New-Object PropertyCondition([AutomationElement]::NameProperty, "Archivos temporales"))
--
   )))
--
 
--
<#
--
# También podría obtener el botón mediante el identificador de automation,
--
# aunque desconozco si el identificador podría ser distinto dependiendo de
--
# la cantidad de botones/elementos disponibles, o de otras versiones de Windows:
--
 
--
$buttonTemporaryFiles = $window.FindFirst([TreeScope]::Descendants, `
--
   (New-Object AndCondition (
--
       (New-Object PropertyCondition([AutomationElement]::ControlTypeProperty, [ControlType]::Button)),
--
       (New-Object PropertyCondition([AutomationElement]::AutomationIdProperty, "SystemSettings_StorageSense_Breakdown_12_Button"))
--
   )))
--
#>
--
 
--
if ($buttonTemporaryFiles -eq $null) {
--
   Write-Error "Can't find ""Archivos temporales"" button."
--
} else {
--
   $invokePattern = $buttonTemporaryFiles.GetCurrentPattern([InvokePattern]::Pattern)
--
   $invokePattern.Invoke()
--
}
--

El resultado:



Nota: El script solo funcionará en un sistema operativo en Español (debido al texto de la ventana y del botón). Probado en Windows 10.

Aténtamente,
Elektro.

Páginas: (1/1)