Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: moikano→@ en 22 Junio 2010, 02:54 am



Título: Caracteres comodin vbs
Publicado por: moikano→@ en 22 Junio 2010, 02:54 am
Hola de nuevo.
vengo con una duda que me a surgido llamando a un objeto:

Código
  1. Set fso = CreateObject("Scripting.FileSystemObject")                       'busca los archivos de texto
  2.     comp = fso.FileExists ("*.txt")

el caso es que así no sirve, necesito que al encontrar cualquier fichero con extensión .txt me de el valor true en la variable.

gracias de ante mano  :)


Título: Re: Caracteres comodin vbs
Publicado por: machio86 en 22 Junio 2010, 12:35 pm
Mira a ver si te sirve algo así:

Código:
sWQL = "SELECT * FROM cim_datafile WHERE Drive='" & drive & "' AND FileName = '" & nombre & "' AND Extension= '"& extension &"'"
For Each f In GetObject("winmgmts:").execquery(sWQL)
ficheros=ficheros+VbCrLf+f.Drive&f.Path&f.FileName&"."&f.Extension
Next
Wscript.Echo ficheros

Para ti yo creo que unicamente necesitarías especificar el campo extension

Un saludo


Título: Re: Caracteres comodin vbs
Publicado por: moikano→@ en 22 Junio 2010, 16:50 pm
gracias por contestar. He probado el codigo, pero no acabo de entenderlo muy bien y por eso creo que me da error o no es lo que encaja bien en el script. Si podrias explicarme que hace exactamente te lo agradeceria. :)

Pongo un trozo mas de codigo por si sirviera de ayuda.

Set objshell = createobject("wscript.shell")                'para ubicarse en el escritorio
Escritorio = objshell.specialfolders("Desktop")                            'para ubicarse en el escritorio
Set fso = CreateObject("Scripting.FileSystemObject")                       'busca los archivos de texto
     comp = fso.FileExists ("*.txt")                                       'busca los archivos de texto
      if comp = true then                                                  'si es verdadero crea la carpeta

El caso es que si el objeto file exit da verdadero crea la carpeta, sino no.


Título: Re: Caracteres comodin vbs
Publicado por: leogtz en 22 Junio 2010, 16:53 pm
Mira a ver si te sirve algo así:

Código:
sWQL = "SELECT * FROM cim_datafile WHERE Drive='" & drive & "' AND FileName = '" & nombre & "' AND Extension= '"& extension &"'"
For Each f In GetObject("winmgmts:").execquery(sWQL)
ficheros=ficheros+VbCrLf+f.Drive&f.Path&f.FileName&"."&f.Extension
Next
Wscript.Echo ficheros

Para ti yo creo que unicamente necesitarías especificar el campo extension

Un saludo

¿Qué tiene que ver con la duda del mensaje?


Título: Re: Caracteres comodin vbs
Publicado por: machio86 en 22 Junio 2010, 23:16 pm
Como que qué tiene que ver con la duda del mensaje? xD

Si antes del código pones
Código:
extension="txt"

Y la consulta la dejas en
Código:
sWQL = "SELECT * FROM cim_datafile WHERE Extension= '"& extension &"'"

Te saca los txt, que creo que es lo que quería xD evidentemetne habría q modificarlo un poco, ponerle un If para q mire si ha encontrado alguno y en ese caso dar la salida que él quiere etc etc , lo que pasa que si es en una carpeta concreta supongo que se podría listar el contenido de la carpeta y con una expresion regular buscar los que tengan extensión .txt


Título: Re: Caracteres comodin vbs
Publicado por: Novlucker en 23 Junio 2010, 20:08 pm
http://msdn.microsoft.com/en-us/library/x23stk5t%28VS.85%29.aspx
Citar
Wildcard characters (*, ?, and so on) are not supported.

La primera solución, la de usar WMI para hacer el trabajo me gusta, porque se aprovecha el "poder" de la sentencia WQL y queda un código limpio :P

Sino se puede usar alternativas "artesanales"

Código
  1. Msgbox txt("C:\Carpetaejemplo", "txt")
  2.  
  3. Function txt(Carpeta, Extension)
  4. txt = False
  5.  
  6. Set objfso = CreateObject("scripting.filesystemobject")
  7. Set oFolder = objfso.getfolder(Carpeta)
  8. Set oFiles = oFolder.files
  9.  
  10. For each f in oFiles
  11. if(lcase(right(f.path,3))) = lcase(Extension) then
  12. txt = True
  13. exit Function
  14. end if
  15. Next
  16.  
  17. End Function

Saludos