Das Notes Forum
Sonstiges => Offtopic => Thema gestartet 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
-
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
-
in ls würde das so aussehen
-
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