elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Borrar carpeta mediante VBS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Borrar carpeta mediante VBS  (Leído 4,600 veces)
marko0s

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Borrar carpeta mediante VBS
« en: 25 Marzo 2020, 18:38 pm »

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

Código:
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


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.041



Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #1 en: 25 Marzo 2020, 22:21 pm »

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í.

Código
  1. Dim strFolderPath, strUserLocalAppData, objFso
  2.  
  3. Set objShell = CreateObject("Wscript.Shell")
  4. Set objFso = CreateObject("Scripting.FileSystemObject")
  5.  
  6. strUserLocalAppData = objShell.ExpandEnvironmentStrings("%LocalAppData%")
  7. strFolderPath = strUserLocalAppData & "\Tempz*"
  8.  
  9. On Error Resume Next
  10. Call objFso.DeleteFolder(strFolderPath, True)
  11. If Err Then
  12.  WScript.Echo(Err.Description)
  13. End If
  14. 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


En línea

marko0s

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #2 en: 26 Marzo 2020, 08:59 am »

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:

Código:
 

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.
« Última modificación: 26 Marzo 2020, 09:02 am por marko0s » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.041



Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #3 en: 26 Marzo 2020, 15:15 pm »

Citar
Si 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
En línea

marko0s

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #4 en: 2 Abril 2020, 10:09 am »

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
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #5 en: 2 Abril 2020, 17:42 pm »

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

Código
  1. dim k as integer
  2. For k = 1 To 31
  3.    msgbox CStr(k), Environ$(k)
  4. 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'...
« Última modificación: 2 Abril 2020, 17:59 pm por NEBIRE » En línea

marko0s

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #6 en: 5 Abril 2020, 11:25 am »

Gracias, pero no lo entiendo muy bien como usar esto.
En línea

marko0s

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #7 en: 5 Abril 2020, 11:29 am »

Como se garía para borrar los arechivos que hay dentro de C:\Windows\Prefetch

   
Código:
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
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Borrar carpeta mediante VBS
« Respuesta #8 en: 5 Abril 2020, 20:19 pm »

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...
Código:
..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

« Última modificación: 5 Abril 2020, 20:39 pm por NEBIRE » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Borrar el contenido de una carpeta. Borrar una carpeta
Programación Visual Basic
‭lipman 3 2,954 Último mensaje 31 Diciembre 2006, 21:10 pm
por ‭lipman
Borrar Log de una carpeta
Scripting
sagito3x 2 2,035 Último mensaje 12 Febrero 2013, 19:05 pm
por sagito3x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines