MLHA - PC - Software - Programmering - Script - WSH - Find

Find kan finde en navngivet fil med udgangspunkt i en angivet sti.

Programmet startes med en bat-fil, find.bat, som kræver to parametre:  

sti
filnavn
   
hvor søgningen skal starte
navnet på den søgte fil

- fx giver følgende parametre det viste resultat:

>find c:\programmer Normal.dot
Normal.dot blev fundet i C:\Programmer\Microsoft Office\Skabeloner

 

find.bat har dette indhold:

@echo off
cscript //nologo find.vbs %1 %2

 

find.vbs har dette indhold:

set args = wscript.arguments

if args.count<>2 then
  we "find kræver to parametre: sti og filnavn - fx:"
  we ">find c:\ test.txt"
else
  sti = args(0)
  fil = args(1)
  Set fs = CreateObject("Scripting.FileSystemObject")
  found = false
  search
  set fs = nothing
end if

'-------------------------

sub we(s)
  wscript.echo s
end sub

sub search()
  Set gf = fs.GetFolder(sti)
  set fc = gf.files
  
  for each f in fc
    if f.name = fil then
      we fil & " blev fundet i " & sti
      found = true
      exit for
    end if
  next

  if not found then
    Set sf = gf.SubFolders
    For Each f in sf
      sti = f.path
      search
      if found then exit for
    Next
  end if
  
end sub

 

Bemærk, at rutinen search() benytter rekursion - dvs. den kalder sig selv for at fortsætte søgningen i den mappe, som variablen sti angiver. I den aktuelle mappe bliver alle filnavne (f.name) sammenlignet med det søgte filnavn (fil). Hvis de er ens, er filen fundet, hvorefter programmet gør to ting:
- udskriver en meddelelse om, hvor filen blev fundet
- sætter variablen found = true og afslutter søgningen i den aktuelle mappe.

Sålænge found er false, fortsættes søgningen med search() rekursivt i undermapper - indtil filen er fundet.