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

Теперь, что если я хочу исключить C:\Users\ Имя пользователя \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5 из поиска?

1 ответ1

2

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

Я проверял это решение, когда комментарий Дэвида Постила появился выше. Я только что заметил это, но я все равно отправлю свой ответ, так как он добавляет пару моментов, которые необходимо учитывать при любом решении.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .