Archivo de la etiqueta: vbs

Lista ficheros por extensión + DateDiff. VBScript

Este es un Script que he hecho para un amigo. Como me ha parecido un poco extraño que me preguntase por esto lo voy a plasmar aquí por si a alguien mas le ayuda.

¿Que hace el Script?

En el directorio seleccionado lista todos los ficheros con la extensión definida (en este caso “001″) y si han pasado mas de 15 días desde su última modificación lo borra.

[vb]
sExt = “001″
ahora=Now
With CreateObject(“Scripting.FileSystemObject”)
For Each oFile In .GetFolder(“c:\temp”).Files
If UCase(.GetExtensionName(oFile.Name)) = Ucase(sExt) Then
‘ Comparación con el día de la ultima modificación
If datediff(“d”,oFile.DateLastModified,ahora) >= 15 Then
Wsh.Echo oFile.Path
.deletefile(oFile.path)
End If
End If
Next
End With
[/vb]

Si queréis que la diferencia sea entre el día de creación y hoy el DateDiff ha de ser el siguiente:

[vb]
If datediff(“d”,oFile.DateCreated,ahora) >= 15 Then
[/vb]

para diferencia entre el día del ultimo acceso y hoy:

[vb]
If datediff(“d”,oFile.DateLastAccessed,ahora) >= 15 Then
[/vb]

Ojo que como os he dicho tal y como está el Script borraría el fichero.

Saber si un proceso se está ejecutando. Visual Basic Script (vbs)

Simple script que nos dice si un proceso se está ejecutando. En el caso siguiente utilizo el notepad.exe pero claro sustituyendo el proceso podéis buscar cualquier otro.
[vb]
Set WshShell = WScript.CreateObject (“WScript.Shell”)
Set colProcessList = GetObject(“Winmgmts:”).ExecQuery (“Select * from Win32_Process”)

For Each objProcess in colProcessList
If objProcess.name = “notepad.exe” then
Encontrado = True
End if
Next
If Encontrado = True then
Msgbox(“Proceso encontrado”)
Else
Msgbox(“Proceso No encontrado”)
End If
[/vb]

Borrar impresoras de red con vbs. Visual Basic Script.

Aquí os dejo un script vbs (Visual Basic Script) que al ser ejecutado en un Pc con Windows lista las impresoras que hay instaladas en el sistema y borra todas las impresoras de red respetando las locales. Está probado en XP y 2000.

En mi caso lo he utilizado para hacer limpieza de las impresoras de red antiguas que algunos equipos tenían instaladas y que ya se encontraban obsoletas. Aplicado con ayuda de una directiva de Active Directory puede ser muy eficiente.

Evidentemente manipulando el script puedes hacer que las borre todas pero eso lo dejo para que os calentéis un poco la cabeza (no mucho).

[vb]
strComputer = “.”
Set WshNetwork = WScript.CreateObject(“WScript.Network”)
Set objShell = CreateObject(“Wscript.Shell”)
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)
Set colInstalledPrinters = objWMIService.ExecQuery _
(“Select * from Win32_Printer”)
Wscript.Echo “Enumero las impresoras del sistema:”
Wscript.Echo “______________________________”
For Each objPrinter in colInstalledPrinters
Wscript.Echo “Nombre: ” & objPrinter.Name
Wscript.Echo “Localización: ” & objPrinter.Location
if InStr(objPrinter.Name, “\\”) > 0 then
wscript.echo Now & ” Borraré: ” & objPrinter.Name
WshNetwork.RemovePrinterConnection objPrinter.Name
end if
Next
Wscript.Echo Now & ” Terminado. ”
[/vb]

Si luego quieres añadir una nueva tan solo has de añadir al final del script por ejemplo:

[vb]
‘Añade la nueva impresora
WshNetwork.AddWindowsPrinterConnection “\\PrintServer1\Dell5210nPS”
‘Pone la impresora por defecto
WshNetwork.SetDefaultPrinter “\\PrintServer1\Dell5210nPS”
[/vb]

Script Vbs para sustituir un fichero.

Ìóâè 43 ñìîòðåòü îíëàéí â õîðîøåì êà÷åñòâå

Script simple para sustituir el fichero de la imagen corporativa de la firma que los usuarios se crean en el Outlook.

En mi empresa cambiamos el logotipo y este script fué usado para cambiar a todos los usuarios la imagen del logotipo de la firma del correo. Está probado en Windows 2000 y XP.

¿Como funciona este script?
Busca el fichero de imagen dentro del directorio de usuario del pc donde se almacenan las firmas de los correos.
Si existe lo sustituye por el nuevo y deja un fichero “hecho.txt” para saber que en ese pc ya se ha ejecutado. Cuando al día siguiente el usuario hace login lo primero que busca el script es el fichero “hecho.txt”, si existe termina y no modifica nada.

Si, ya se, este script es un poco personalizado para este caso pero espero que algunas partes del mismo le sean útiles a alguno de los lectores de este blog.

[vb]
Set shell= WScript.CreateObject(“WScript.Shell”)
strUserName = shell.ExpandEnvironmentStrings(“%USERNAME%”)

dim Ruta
Ruta= “C:\Documents and Settings\” & strUserName & “\Datos de Programa\Microsoft\Signatures\”

call ShowFolderList (Ruta, strUserName)

Sub ShowFolderList(Ruta, strUserName)
Dim fs, f, fc, s
dim dia, mes, ano
dia = day(date ())
mes = month (date())
ano = year (date())
hora = hour(time())
minuto = minute(time())

strUserName = strUsername & fecha
‘WScript.echo strUserName
Set fs = CreateObject(“Scripting.FileSystemObject”)
If fs.FolderExists (Ruta) then
Set f = fs.GetFolder(Ruta)
Set fc = f.SubFolders
if fs.FileExists(Ruta & “\hecho.txt”) then
‘ WScript.echo “Ya esta”
else
For Each f in fc
s = f.path & “\img001.gif”
‘ WScript.echo s
if fs.FileExists(f.Path & “\image001.gif”) then
‘WScript.echo f.path
fs.CopyFile “P:\Informatica\firma\image001.gif”, f.path & “\image001.gif”

Set f = fs.CreateTextFile(Ruta & “\hecho.txt”, True)
Set f = fs.CreateTextFile(“P:\informatica\firma\” & strUserName & “-” & dia & “-” & mes & “-” & ano & “-” & hora & “-” & minuto & “.txt”, True)
end if
Next
End if
end if
End Sub
[/vb]

Vbs Script para hacer copia de seguridad de un fichero.


Quizás quieras hacer un script para que haga la tarea de copiar una serie de ficheros a un determinado sitio. A continuación pongo un ejemplo de un script que le he hecho a un amigo y que es bastante simple y efectivo.

En su caso tiene una pequeña empresa con ordenadores con correos electrónicos pero la empresa no es lo suficientemente grande como para emplear dinero en un servidor de correo pero si, necesitan backup del correo para no perder la información.

En el caso de Outlook Express la información se almacena en un archivo con extensión “pst”. En el ejemplo siguiente se hace copia de seguridad de ese fichero a una unidad “G:” que es una unidad compartida en un servidor y conectada al pc del usuario.

Por supuesto este script es completamente a vuestra disposición, es cuestión de retocar algunas cosas y adaptarla a tu entorno.

En primer lugar aquí está el código y, a continuación, voy a explicarlo:
[vb]
Set shell= WScript.CreateObject(“WScript.Shell”)
strUserName = shell.ExpandEnvironmentStrings(“%USERNAME%”)
Dim fso
set fso = CreateObject(“Scripting.FileSystemObject”)
lnDayOfWeek = weekday(now())
if lnDayOfWeek = 5 then
If fso.DriveExists(“G:”) Then
Dim lcDrive
Set lcDrive = fso.GetDrive(“G:”)
If lcDrive.IsReady Then
newfolderpath = “\\servername\users\” & strUserName & “\EmailBackup”
If Not fso.FolderExists(newfolderpath) Then
Set newfolder = fso.CreateFolder(newfolderpath)
End If
Dim file
file = “C:\Documents and Settings\” & strUserName & “\Local Settings\Application Data\Microsoft\Outlook\Outlook.pst”
If fso.FileExists(file) Then
fso.CopyFile “C:\Documents and Settings\” & strUserName & “\Local Settings\Application Data\Microsoft\Outlook\Outlook.pst”, “\\servername\users\” & strUserName & “\EmailBackup\Outlook.pst”
set fso = nothing
wscript.echo “¡Se ha completado tu backup del email!”
end if
end if
end if
end if
[/vb]

Básicamente, se inicia la creación de un objeto FileSystem que se encargará de copiar el archivo en el servidor. A continuación, hago un control para ver qué día de la semana es, lo hago solo los viernes ( por eso el 5), a fin de que el script se ejecute sólo una vez por semana.

También hay una comprobación para asegurarse de que la unidad G: está disponible (la unidad de red donde voy a copiar de los datos) antes de iniciar a la copia del fichero.

Entonces compruebo si existe la carpeta donde voy a copiar y si no, la creo. También compruebo que el archivo existe en el pc del usuario y si es así lo copio a la carpeta del usuario en la red. Yo uso el método shell.ExpandEnvironmentStrings ( “% USERNAME%”) para obtener el nombre del usuario actual.

Este script se puede aplicar como un script de inicio de sesión, utilizarse en una política de grupo o de cierre de sesión en Windows.