Buenas tardes,
alguin seria tan amable de decirme como borrar con un script *.vbs las carpetas que se me crean en
C:\Users\miUsuario\AppData\Local\Tempzxpsign6031c91fa5e36b0d
se me crean bastantes y quisiera decirle al script que me borre todas que empiecen por Tempz
Estoy usando esto pero no funciona y no veo la forma ya que mis conocimientos son limitados de scripting
Dim strFolderPath, objFso
strFolderPath = "C:\Users\miUsuario\AppData\Local\Temp[b]*[/b]"
Set objFso = CreateObject("Scripting.Filesystemobject")
If objFso.FolderExists(strFolderPath) then
objFso.DeleteFolder strFolderPath, True
End If
Set objFso = Nothing
creo que el temp* (asterisco) no funciona como tal
gracias y perdonad las molestias
Saludos,
objFso.FolderExists("path\to\folder") no soporta comodines, requiere la ruta exacta de la carpeta ya sea URL Absoluta o Relativa.
- Lo más sencillo que veo es utilizar On Error Resume Next para luego verificar si ha habido errores, en este caso el error número 76 corresponde a que no se ha encontrado la ruta o la carpeta no existe, aunque más genérico es mostrar el error en sí.
Dim strFolderPath, strUserLocalAppData, objFso
Set objShell = CreateObject("Wscript.Shell")
Set objFso = CreateObject("Scripting.FileSystemObject")
strUserLocalAppData = objShell.ExpandEnvironmentStrings("%LocalAppData%")
strFolderPath = strUserLocalAppData & "\Tempz*"
On Error Resume Next
Call objFso.DeleteFolder(strFolderPath, True)
If Err Then
WScript.Echo(Err.Description)
End If
Err.clear
- Si te estás iniciando en VBScript, te podría recomendar este par de libros en español:
Visual Basic Script Tomo I (White Darknes):
https://openlibra.com/es/book/visual-basic-script
Visual Basic Script Tomo II (White Darknes):
https://openlibra.com/es/book/visual-basic-script-parte-2
Muchisimas gracias por los aportes. Mil gracias. Me ha servido de muchisima ayuda. Los libros me los voy a leer "pero ya".
Nueva pregunta.
Si esa carpeta no existiera, el script se detendría?
o vale on poner:
Dim strFolderPath, strUserLocalAppData, objFso
Set objShell = CreateObject("Wscript.Shell")
Set objFso = CreateObject("Scripting.FileSystemObject")
strUserLocalAppData = objShell.ExpandEnvironmentStrings("%LocalAppData%")
strFolderPath = strUserLocalAppData & "\Tempz*"
On Error Resume Next
Call objFso.DeleteFolder(strFolderPath, True)
If Err Then
objFso.CreateFolder strFolderPath
strFolderPath = strUserLocalAppData & "\Tempz01" 'por ejemplo crea una carpeta llamada asi
WScript.Echo(Err.Description)
End If
Err.clear
Gracias
nota: si si sabes de algun buen curso de scripting que pueda comprar, si es gratuito mejor, encantado de leerte.
CitarSi esa carpeta no existiera, el script se detendría?
- Nop, para eso está la línea
On Error Resume Next, al producirse un error luego de haber declarado esa línea, el script continúa con la siguiente línea sin mostrar ningún error.
-- Luego se utiliza el objeto
Err para comprobar si ha habido algún error y tomar las medidas respectivas. Al final usar
Err.Clear para restablecer el objeto
Err como si no hubiera existido nunca el error capturado.
- Visual Basic Script ya tiene buena edad, hay paginas de documentación muy conocidas en Inglés como https://ss64.com/ o https://www.robvanderwoude.com/, en estas mismas se hace referencia buenos libros también en inglés: https://ss64.com/links/vblinks.html https://www.robvanderwoude.com/books.php
- También podrías descargarte la referencia del lenguaje VBScript 5 desde:
https://raw.githubusercontent.com/pmachapman/VBSE/master/Distribution/script56.chm
- Existe un IDE que quizá te interese, está en inglés y se puede utilizar gratuitamente: https://www.vbsedit.com
Buenos dias de nuevo, MIL gracias.
2preguntas nuevas
> %localappdata% llama a la carpeta .appdata, ok
¿Cual es el patch para llamar a la carpeta windows o c:\windows.?
esto es porque estoy intentando borrar lo que hay dentro de la carpeta windows/temp y no me deja
> Otra cosa, para borrar la papeleraa me podrias decir tambien el codigo?
Muchisimas gracias por todo de verdad, y perdona por las molestias
Escribe estas 3 línea de código, y obtendrás tanto el environ-string, como su valor, luego toma lo que precises (y guárdalas para sucesivas ocasiones).... Nota sin embargo que pueden editarse
dim k as integer
For k = 1 To 31
msgbox CStr(k), Environ$(k)
Next
Olvidaba decirte que no uses los números en tu código, la lista puede variar y a cada momento y equipo tener un índice distinto. Ten en cuenta que dichas cadenas se pueden editar/añadir/eliminar desde el 'panel de control'...
Gracias, pero no lo entiendo muy bien como usar esto.
Como se garía para borrar los arechivos que hay dentro de C:\Windows\Prefetch
Dim strFolderPath, strUserLocalAppData, objFso
Set objShell = CreateObject("Wscript.Shell")
Set objFso = CreateObject("Scripting.FileSystemObject")
strUserLocalAppData = objShell.ExpandEnvironmentStrings("C:\Windows")
strFolderPath = strUserLocalAppData & "\Prefetch" 'esto tampoco "\Prefetch\*"
On Error Resume Next
Call objFso.DeleteFolder(strFolderPath, True)
Err.clear
no me funciona, perdona por las molestias
Si quieres borrar una carpeta que no está vacía, antes tienes que borrar todos los ficheros que contenga.
Más o menos esto necesitas...
..crear los objetos
con errores continuar
folder = ...selecciona la carpeta de tu interés...
Por cada fichero en folder.Files
fso.DeleteFile(fichero, true) ' <--- forzar su borrado (OJO: con precaución).
siguente
si folder.files.count = 0
fso.deleteFolder
sino
mensaje "oh, oh.. parece que a carpeta contiene algún fichero que no se ha podido borrar...
fin si