Как исключить папку из поиска строки
>>"results\txtmail.txt" findstr /i /p /s mail %userprofile%\*.txt
А что если я хочу исключить из поиска C:\Users\ Имя пользователя \AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5?
1 ответ
Решение
После обнаружения этого findstr
игнорирует скрытый бит и находит файлы в скрытых папках независимо от того, я тогда использовал for
Команда (которая уважает это), чтобы придумать следующее, изложенное для командного файла:-
@echo off
pushd %userprofile%
for /r %%f in (*.txt) do echo %%f | findstr "\Temporary" >NUL: || findstr /i /p mail "%%f" nul:
popd
Заметки:-
- Мне не удалось получить
for /r
работать, когда я добавляю путь к каталогу внутри файла соответствия, следовательно, использованиеpushd
/popd
, - Первый
findstr
ищет\Temporary
(это можно уточнить) в пути к файлу и выполняет второйfindstr
только если он не найден. - Экстра
nul:
параметр на второмfindstr
гарантирует, что имя файла будет напечатано с найденной строкой: обычно оно пропускается, когда передается только один файл (может быть другой способ сделать это, но я не часто использую эту команду). - Если вы делаете это часто, вы можете рассмотреть вопрос о перемещении интернет-кэша в другой каталог за пределами профиля пользователя.
Я проверял это решение, когда комментарий Дэвида Постила появился выше. Я только что заметил это, но я все равно отправлю свой ответ, так как он добавляет пару моментов, которые необходимо учитывать в любом решении.