Das Notes Forum

Sonstiges => Offtopic => Thema gestartet von: adminnaddel am 31.01.05 - 13:34:43

Titel: VBS gebe mir alle cache.dsk in einer txt aus ....
Beitrag von: adminnaddel am 31.01.05 - 13:34:43
Hallo liebe Gemeinde,

wer suche, der finde .... doch nun ist vorbei!
Hat jemand ein kleines VBS für  mich, der mir rekursiv einen Ordner durchsucht, am besten nach einer bestimmten Datei "cache.dsk" und listet diese mir inkl. Path in einer Text auf!

Weiß nun wirklich net mehr weiter.

lg
Andy
Titel: Re: VBS gebe mir alle cache.dsk in einer txt aus ....
Beitrag von: adminnaddel am 31.01.05 - 14:09:05
Okay ... ich mache mal den Anfang:

das folgende Script schreibt mir in die txt.log nur den path zum Folder, nicht aber die Dateien drüber und drin?!  :( woran nkönnte es liegen?

Option Explicit
Dim File, FileOut
Dim WSHShell, fso, oArgs
Dim oFolders, oSubFolder, oFiles, Folder
Dim i, Text, Pfad, DateiX, VerzX, Verz(), Datei()

Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso      = WScript.CreateObject("Scripting.FileSystemObject")
set oArgs    = Wscript.Arguments

If oArgs.Count > 0 Then
  Pfad = oArgs.item(0)

  if fso.FileExists( Pfad ) then Pfad = fso.GetParentFolderName( Pfad )

Else
  Pfad = fso.GetFolder( "." )
End If

if not fso.FolderExists( Pfad ) then
  MsgBox UCase(Pfad) & "   existiert nicht!" & vbCRLF & vbCRLF & " . . . das ist das Ende.", , WScript.ScriptName
  WScript.Quit
End If


' Dateiliste an Array übergeben
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
i = 0
Set oFolders = fso.GetFolder( Pfad )
Set oFiles   = oFolders.Files
  For Each DateiX In oFiles
    ReDim Preserve Datei(i)
                   Datei(i) = DateiX.Name
    i = i + 1
  Next
Set oFiles   = nothing
Set oFolders = nothing

' Array an Text übergeben
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Text = ""
If i > 0 then
  For i = 0 to UBound( Datei )
    Text = Text & Pfad & "\" & Datei(i) & vbCRLF
  Next
Else
    Text = "keine Dateien vorhanden."
End If

' Verzeichnisliste an Array übergeben
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
i = 0
Set oFolders = fso.GetFolder( Pfad )
Set oSubFolder = oFolders.SubFolders
  For Each VerzX In oSubFolder
    ReDim Preserve Verz(i)
                   Verz(i) = VerzX.Name
    i = i + 1
  Next
Set oFiles   = nothing
Set oFolders = nothing

' Array an Text übergeben
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Text = ""
If i > 0 then
  For i = 0 to UBound( Verz )
    Set fso     = WScript.CreateObject("Scripting.FileSystemObject")
         File =  WScript.ScriptName  & ".log"
     Set FileOut = fso.OpenTextFile( File , 8, true)
         FileOut.WriteLine  Text & Pfad & "\" & Verz(i) & vbCRLF
  Next
End If

lg
Andy
Titel: Re: VBS gebe mir alle cache.dsk in einer txt aus ....
Beitrag von: Christopher am 31.01.05 - 15:16:40
in ls würde das so aussehen

Titel: Re: VBS gebe mir alle cache.dsk in einer txt aus ....
Beitrag von: sloe am 31.01.05 - 17:20:18
und in vbs so...
' *************************************
' C:\ListAllFiles.vbs
' Liste alle gefundenen Dateien im Ordner/Unterordnern
' mit Log für komplette Pfadangabe
' 31.01.05 17:19
' Version 1
' (C) by Sloe 2005
' *************************************

Option Explicit

Const ForForAppending = 8
Dim oArgs, oFso, oFolder, oShell, objFile
Dim SearchFile, oFolderSub, Pfad, Hit, HitFileName, FileLogReport, PathLogFiles

Call Main

Sub Main
   Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
   Set oShell = WScript.CreateObject("WScript.Shell")
   Set oArgs = Wscript.Arguments
   If oArgs.Count > 0 Then
     Pfad = oArgs.item(0)
     if oFso.FileExists( Pfad ) then Pfad = oFso.GetParentFolderName( Pfad )
   Else
     Pfad = oFso.GetFolder( "." )
   End If
   
   if not oFso.FolderExists( Pfad ) then
     MsgBox UCase(Pfad) & "   existiert nicht!" & vbCRLF & vbCRLF & " . . . das ist das Ende.", , WScript.ScriptName
     WScript.Quit
   End If
   
   PathLogFiles = WScript.ScriptName  & ".log"
   Set FileLogReport = oFso.OpenTextFile(PathLogFiles, ForForAppending, true)
   SearchFile = "cache.dsk"   ' Search for ...
   Set oFolder = oFso.GetFolder(Pfad)
   Call ListFiles (oFolder)
   WScript.Echo "Auftrag ausgeführt!"
End Sub

Sub ListFiles(oFolder)
   For Each objFile In oFolder.Files
      If LCase(objFile.Name) = LCase(SearchFile) Then
         Hit = objFile.Path
         Call LogDatei(Hit)
      End If
   Next
   For Each oFolderSub In oFolder.SubFolders
        ListFiles oFolderSub
   Next
End Sub

Sub LogDatei(HitFileName)
   FileLogReport.WriteLine(HitFileName & vbCrLf)
End Sub