Как исключить папку из поиска строки
>>"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гарантирует, что имя файла будет напечатано с найденной строкой: обычно оно пропускается, когда передается только один файл (может быть другой способ сделать это, но я не часто использую эту команду). - Если вы делаете это часто, вы можете рассмотреть вопрос о перемещении интернет-кэша в другой каталог за пределами профиля пользователя.
Я проверял это решение, когда комментарий Дэвида Постила появился выше. Я только что заметил это, но я все равно отправлю свой ответ, так как он добавляет пару моментов, которые необходимо учитывать в любом решении.