Ik moet een dll maken die gebruik maakt van de zoekfunctie van Windows. Ik moet op dezelfde wijze zoeken op tekst in Word-documenten. Volgens mij kan ik dan het best gebruik maken van de windows-zoekfunctie, in plaats van dat ik een zooi Word-objecten aanmaak om per bestand te controleren of de zoekstring erin staat. Weet iemand hoe de functie heet die ik wil gebruiken en welk bestand ik moet includen om er beschikking over te hebben? Of weet iemand een locatie waar ik hierachter kan komen?
Ook op Windows NT?
Nee dusquote: MSDNIndexing Service is a base service for Microsoft® Windows® 2000 or later
[ Voor 76% gewijzigd door De doorloper op 28-07-2004 15:49 ]
Verwijderd
Dat 't NT4 moest zijn had je er niet bijgezegd hè...
Ik ben bang dat je dan niet veel geluk zult hebben.
Je kan 't altijd nog zó doen:
Ik ben bang dat je dan niet veel geluk zult hebben.
Je kan 't altijd nog zó doen:
code:
1
| find "tekst" /i *.doc | find "----" |
[ Voor 13% gewijzigd door Verwijderd op 28-07-2004 16:25 ]
o mijn reply was niet negatief bedoeld, maar ik zat het antwoord op de vraag te zoeken terwijl ik die reactie maakte 
waar moet ik die code plaatsen? Op de commandline zeker? De bedoeling is dat ik het in een dll neerzet, waarna onze bestaande software hier gebruik van kan maken, dus ik weet niet of dit zo'n elegante oplossing is.
waar moet ik die code plaatsen? Op de commandline zeker? De bedoeling is dat ik het in een dll neerzet, waarna onze bestaande software hier gebruik van kan maken, dus ik weet niet of dit zo'n elegante oplossing is.
Verwijderd
Gheh... elegant is 't niet, nee
.
Maar ik zou zo niks beters weten. Maar misschien onze mede-tweakers wel
.
En mocht je er verder niet meer uitkomen, hier is een proof-of-concept van mijn idee in VBScript (Je hebt d'r wel WSH 5.6 voor nodig) :-
Edit: Whoepsie, deze gaat niet werken. FIND is stom, zie ik nu, want hij laat de naam van elk bestand zien, zelfs als het de zoektekst niet bevat. Umm... gebruik 'grep'
. Of als je /c gebruikt, laat hij zien hoeveel lijnen in elke file matchen, en dan kun je filteren op alle regels die meer dan 0 lijnen matchen.
Maar ik zou zo niks beters weten. Maar misschien onze mede-tweakers wel
En mocht je er verder niet meer uitkomen, hier is een proof-of-concept van mijn idee in VBScript (Je hebt d'r wel WSH 5.6 voor nodig) :-
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Function StripFindOutput(sString) ' Get everything past the first space p = InStr(sString, " ") StripFindOutput = Mid(sString, p + 1) End Function Set oShell = CreateObject("WScript.Shell") sFindText = WScript.Arguments(0) sFileSpec = WScript.Arguments(1) sCommand = "cmd.exe /c find /i """ & sFindText & """ """ & sFileSpec & """ | find ""-----""" Set oProc = oShell.Exec(sCommand) sResult = oProc.StdOut.ReadAll aResults = Split(sResult, Chr(13) & Chr(10)) For i = LBound(aResults) To UBound(aResults) If aResults(i) <> "" Then WScript.Echo StripFindOutput(aResults(i)) End If Next |
Edit: Whoepsie, deze gaat niet werken. FIND is stom, zie ik nu, want hij laat de naam van elk bestand zien, zelfs als het de zoektekst niet bevat. Umm... gebruik 'grep'
[ Voor 36% gewijzigd door Verwijderd op 28-07-2004 21:21 ]
Dat idee van "find" gebruiken bevalt me wel, die ga ik proberen.
Pagina: 1