So schließen Sie einen Ordner von einer Zeichenfolgen-Suche aus

1083
Daniel
>>"results\txtmail.txt" findstr /i /p /s mail %userprofile%\*.txt 

Was passiert nun, wenn ich C: \ Users \ Benutzername \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5 von der Suche ausschließen möchte?

1
Am einfachsten ist es möglicherweise, den Ordner vorübergehend auszublenden, während Sie die Suche durchführen. AFH vor 7 Jahren 0
Nun, der Ordner ist versteckt, aber es scheint, als würde er trotzdem genommen. Ich kann den Ordner nicht finden, indem ich in das Verzeichnis gehe, nur die Stapeldatei kann ihn lesen. Daniel vor 7 Jahren 0
Sie können nicht leicht Sie müssen wahrscheinlich den Verzeichnisbaum mit 'for / r' durchgehen und explizit nach diesem Verzeichnis suchen, bevor Sie `findstr` ausführen. Siehe meine Dokumentation [Rekursiver Besuch von Verzeichnissen in einer Verzeichnisstruktur] (https://stackoverflow.com/documentation/batch-file/3695/for-loops-in-batch-files/12871/recursively-visit-directories-in- a-verzeichnisbaum # t = 201610032137216676136) DavidPostill vor 7 Jahren 0

1 Antwort auf die Frage

2
AFH

Nachdem ich herausgefunden hatte, dass findstrdas versteckte Bit ignoriert wird und Dateien fortrotzdem in versteckten Ordnern gefunden werden, habe ich dann den Befehl (der es respektiert) mit folgendem Befehl für eine Stapeldatei verwendet: -

@echo off pushd %userprofile% for /r %%f in (*.txt) do echo %%f | findstr "\Temporary" >NUL: || findstr /i /p mail "%%f" nul: popd 

Anmerkungen:-

  • Ich habe es nicht geschafft, for /ran die Arbeit zu gelangen, wenn ich einen Dateipfad in die Dateiübereinstimmung hinzufüge, daher die Verwendung von pushd/ popd.
  • Der erste findstrsucht \Temporary(dies könnte ausgeführt werden) im Dateipfad und führt den zweiten findstrnur aus, wenn er nicht gefunden wird.
  • Der zusätzliche nul:Parameter im zweiten Parameter findstrstellt sicher, dass der Dateiname mit der gefundenen Zeichenfolge gedruckt wird. Normalerweise wird dieser Parameter weggelassen, wenn nur eine Datei übergeben wird (möglicherweise gibt es eine andere Möglichkeit, dies zu tun, aber ich verwende diesen Befehl nicht oft).
  • Wenn Sie dies häufig tun, möchten Sie möglicherweise den Internet-Cache in ein anderes Verzeichnis außerhalb des Benutzerprofils verschieben.

Ich habe mir diese Lösung angesehen, als der Kommentar von David Postill oben erschien. Ich habe es gerade erst bemerkt, aber ich werde meine Antwort trotzdem einreichen, da es einige Punkte hinzufügt, die in jeder Lösung berücksichtigt werden müssen.

Ich habe versucht, Ihren Code auszuführen, und der Ordner Content.IE5 ist immer noch aufgetaucht, wie in diesem Bild zu sehen ist: https://s11.postimg.org/a5xadelmr/Pic_256.png Daniel vor 7 Jahren 0
Ich kann Ihren Fall nicht direkt testen, da der Internet-Cache unter Win10 anders organisiert ist. Ich habe jedoch ein Verzeichnis getestet, das ich mit einer Textdatei darin erstellt hatte, und es funktionierte wie erwartet. Weitere Untersuchungen zeigen jedoch, dass Textdateien in den verborgenen Dateien ausgeschlossen werden, aber die versteckten Unterverzeichnisse _are_ durchsucht werden, was völlig irrational erscheint. Ich habe daher meine Antwort in eine Antwort geändert, die unabhängig vom verborgenen Status funktioniert. AFH vor 7 Jahren 0