Avatar billede thesurfer Nybegynder
14. maj 2006 - 12:17 Der er 11 kommentarer og
1 løsning

bat fil: Find "foo" i alle mapper / filer og returner oversigt

Evt hjælp, Find-command: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/find.mspx
Se også "for"-loopen i bunden af siden.


Mappe struktur:

Indhold af C:\Temp\mmc\system\Mail\000010~1

14-05-2006  11:16    <DIR>          .
14-05-2006  11:16    <DIR>          ..
14-05-2006  11:16    <DIR>          0
14-05-2006  11:16    <DIR>          1
14-05-2006  11:16    <DIR>          2
14-05-2006  11:16    <DIR>          3
14-05-2006  11:16    <DIR>          4
14-05-2006  11:16    <DIR>          5
14-05-2006  11:16    <DIR>          6
14-05-2006  11:16    <DIR>          7
14-05-2006  11:16    <DIR>          8
14-05-2006  11:16    <DIR>          9
14-05-2006  11:16    <DIR>          a
14-05-2006  11:16    <DIR>          b
14-05-2006  11:16    <DIR>          c
14-05-2006  11:16    <DIR>          d
14-05-2006  11:16    <DIR>          e
14-05-2006  11:16    <DIR>          f

Vi står i mappen "000010~1", som indeholder mapperne (0-9, a-f) som indholder sms-filerne.

Bat filen skal gennemsøge alle mapperne i "000010~1", og lede efter et bestemt søgeord (angivet af brugeren) i filerne, der ligger i mapperne.

Output kan ske til en tekstfil, f.eks. c:\temp\output.txt

Selvom filen indeholde en masse firkanter osv, så indeholder den også plain text, som er det der skal søges i.

Jeg har prøvet på at lave en kombination, der ikke helt lykkes (mappen "x" svarer til "000010~1"):
dir c:\temp\x\ /s /b | for %f in (c:\temp\x\0\* .*) do find /i /c "map" %f >> c:\temp\output.txt

Problemet er bare, at jeg selv har sat "0" ind i linien "c:\temp\x\0\* .*".. Det skulle den gerne selv gøre..

Nogen forslag?
Avatar billede thesurfer Nybegynder
14. maj 2006 - 12:23 #1
Det skal lige siges, at den nuværnde kode udskriver navnet på alle filer den søger.. og ikke kun dem der indeholder søgeordet..

Eksempel fra http://www.computerhope.com/findhlp.htm

SYNTAX

Searches for a text string in a file or files.

FIND [/V] [/C] [/N] [/I] "string" [[drive:][path]filename[ ...]]
/V     Displays all lines NOT containing the specified string.   
/C    Displays only the count of lines containing the string.   
/N     Displays line numbers with the displayed lines.   
/I    Ignores the case of characters when searching for the string.   
"string"     Specifies the text string to find.   
[drive:][path]filename     Specifies a file or files to search.   

If a pathname is not specified, FIND searches the text typed at the prompt or piped from another command.

EXAMPLES

find /c "REM" c:\autoexec.bat = This would find any "REM" statement in the autoexec.bat.

find "hope" *.txt = This would search for any text file (.txt) that contains the text hope in the current directory. Below is an example of the output you may see. As can be seen from the below example the only file that contains hope is the CH.TXT file.

---------- ACTIVE SETUP LOG.TXT

---------- CH.TXT
computer hope

---------- MODEMDET.TXT

---------- OEWABLOG.TXT

---------- SCHEDLGU.TXT

---------- SETUPLOG.TXT
Avatar billede thesurfer Nybegynder
14. maj 2006 - 12:25 #2
Af en eller anden mystisk årsag, virker Windows Search (F3) ikke som det skal..
Avatar billede bertelbrander Novice
14. maj 2006 - 13:00 #3
Prøv med findstr i stedet for find, den har nogen flere options, og kan også søge i undermapper.
Avatar billede bertelbrander Novice
14. maj 2006 - 13:10 #4
findstr /S foo * >c:\temp\output.txt
Avatar billede thesurfer Nybegynder
14. maj 2006 - 13:40 #5
Hmm.. findstr tager "søgeord1 søgeord2" som 2 forskelige søgninger?
Dvs, hvis jeg søger efter "hello world", laver den 2 søgerning:
1) returnerer alle dem med hello
2) returnerer alle dem med world

I stedet for 1 søgning, på "hello world" som 1 søgeord.

Kan det passe?
Avatar billede thesurfer Nybegynder
14. maj 2006 - 13:41 #6
Ahhh.. man skal vist bruge /X..
Avatar billede thesurfer Nybegynder
14. maj 2006 - 13:43 #7
Avatar billede thesurfer Nybegynder
14. maj 2006 - 13:50 #8
Jeg synes ikke at jeg kan finde det?
Avatar billede thesurfer Nybegynder
14. maj 2006 - 13:51 #9
Jeg prøver lige:

To search for "hello there" in file x.y, type:

findstr /c:"hello there" x.y
Avatar billede thesurfer Nybegynder
14. maj 2006 - 13:59 #10
bertelbrander> Det var /C der skulle bruges.. smid et svar :-)
Avatar billede bertelbrander Novice
14. maj 2006 - 17:01 #11
Jeg samler ikke på point.
Avatar billede thesurfer Nybegynder
14. maj 2006 - 17:08 #12
OK.. Du skal have tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester