martes, 3 de agosto de 2010

Borrado de archivos por fecha

En muchas ocasiones nos es necesario ejecutar (por ejemplo vía tareas programadas de Windows según una planificación) la eliminación masiva de archivos o directorios de una ruta determinada (archivos temporales, logs de aplicaciones).

Para ello, podemos utilizar los siguientes scripts o batch de línea de comandos de CMD:

Primera opción, un script en VBS en el que indicamos en la constante "DIAS", el número de días que queremos conservar en base a la fecha de los ficheros, y en la constante "DIRECTORIO, la ruta sobre la que efectuar el borrado:

Option Explicit

Dim objNetwork
Const DIAS = 90
Const DIRECTORIO = "C:\WINDOWS\system32\LogFiles\W3SVC1012394340"

Call s_BorrarFicheros(DIRECTORIO)

Sub s_BorrarFicheros(str_Ruta)


Dim OBJETO, PROPIEDAD, ARCHIVO, CARPETA



Set OBJETO = WScript.CreateObject("Scripting.FileSystemObject")
Set PROPIEDAD = OBJETO.GetFolder(str_Ruta)

For Each ARCHIVO in PROPIEDAD.Files

If DateDiff ("d", ARCHIVO.DateLastModified, Now) > DIAS Then

ARCHIVO.Delete (True)

End If

Next

For Each CARPETA In PROPIEDAD.SubFolders

Call s_BorrarFicheros(CARPETA.Path)

Next

Set CARPETA = Nothing
Set ARCHIVO = Nothing
Set PROPIEDAD = Nothing
Set OBJETO = Nothing

End Sub


Otra opción, el comando forfiles, al que psamos la ruta en el parámetro -p y el número de días a conservas con el parámetro -d:
forfiles -s -p "C:\TEMP" -c "cmd /c echo del /Q /F @PATH & del /Q /F @PATH & RD /Q /S @PATH" -d -3


Y otra más, un "bat" para eliminar subdirectorios y su contenido a partir de la ruta definida en cursiva:

@echo off
pushd "C:\TEMP"
del /q *.*
for /f "Tokens=*" %%G in ('dir /B') do rd /s /q "%%G"
popd
pushd

lunes, 2 de agosto de 2010

Información del sistema en el escritorio con BGINFO


BGINFO es una herramienta de la suite de Sysinternals (adquiridas por Microsoft) del gran Mark Russinovich, uno de los gurús de referencia dentro del mundo del "troubleshooting" y resolución de problemas en Windows.

BGINFO nos permite de manera fácil y sencilla mostrar información del sistema parametrizable en nuestro fondo de escritorio.

Toda la referencia de la herramienta está disponible en:
http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx

Para que refresque automáticamente la información de BGINFO cada vez que iniciamos sesión en una máquina, podemos hacer lo siguiente.

Copiar el ejecutable "Bginfo.exe" y el archivo de configuración que guardemos desde la propia aplicación con los parámetros y el aspecto que queramos mostrar, p.e. "BgInfoConfig.bgi" en la ruta "C:\WINDOWS\"

Posteriormente, para versiones hasta Windows Server 2003 crearemos un acceso directo a "C:\WINDOWS\Bginfo.exe BgInfoConfig.bgi /timer=0" que guardaremos en la siguiente ruta "C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio" ( En versiones en inglés "C:\Documents and Settings\All Users\Start Menu\Programs\Startup"). Con esto, cada vez que se inicie sesión, se nos actualizará la información de sistema configurada.

En Windows Server 2008 (Y Windows Vista y 7), la ruta en la que crear el acceso directo es "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup".

Aparte de esto, otra posibilidad para actualizar la información es jugar con las tareas programadas de Windows, agregando el comando indicado arriba con la programación que nos interese (en el inicio de la máquina o cada cierto tiempo).

Métodos de ahorro de energía y bloqueo de equipos por línea de comandos


En Windows disponemos de 2 comandos para gestionar la energía del equipo, uno de ellos además nos permite realizar más operaciones sobre nuestro equipo, se trata de POWERCFG y RUNDLL32:

POWERCFG.EXE

Con este comando podemos modificar y listar las diferentes opciones de energía de nuestra máquina con Windows. A continuación, mencionar distintos artículos que nos guiarán en su utilización:

Opciones de la línea de comandos de Powercfg
http://technet.microsoft.com/es-es/library/cc748940%28WS.10%29.aspx

Video "How Do I: Using PowerCfg in Windows 7?"
http://technet.microsoft.com/en-us/windows/ee430886.aspx

Cómo utilizar Powercfg.exe en Windows Server 2003
http://support.microsoft.com/kb/324347/es

Cómo utilizar Powercfg.exe para crear un objeto de directiva de grupo para las combinaciones de energía en Windows XP
http://support.microsoft.com/kb/915160

powercfg.exe /change "always on" /monitor-timeout-ac 20 powercfg.exe /SETACTIVE "always on"

RUNDLL32.EXE

Este ejecutable nos permite realizar diferentes operaciones sobre Windows, pasándole diferentes invocaciones a DLLs. Podemos consultar el siguiente artículo sobre el uso de RUNDLL32.EXE:

http://vlaurie.com/computers2/Articles/rundll32.htm

A modo de ejemplo, para cambiar el estado del equipo a modo hibernación:

rundll32.exe PowrProf.dll,SetSuspendState

Para bloquear el equipo utilizaremos la siguiente sintaxis:

rundll32.exe user32.dll, LockWorkStation

Este último comando puede acomodarse a las políticas locales o de dominio de la máquina para programar el bloqueo automático de equipos transcurrido unos minutos, dentro de la rama Plantillas Administrativas > Panel de Control > Pantalla > Protector de Pantalla, Nombre del archivo ejecutable del protector de pantalla y Tiempo de espera.