Как исключить папку из поиска строки

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

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

1
Самым простым способом может быть временное скрытие папки во время поиска. AFH 8 лет назад 0
Хорошо, эта папка скрыта, но, похоже, ее все равно забирают. Я не могу найти папку, перейдя в каталог, только командный файл может прочитать ее. Daniel 8 лет назад 0
Вы не можете легко. Вам, вероятно, нужно пройтись по дереву каталогов с помощью `for / r` и явно проверить этот каталог перед запуском` findstr`. См. Мою документацию [Рекурсивное посещение каталогов в дереве каталогов] (https://stackoverflow.com/documentation/batch-file/3695/for-loops-in-batch-files/12871/recursively-visit-directories-in- а-каталог-дерево # т = 201610032137216676136) DavidPostill 8 лет назад 0

1 ответ на вопрос

2
AFH

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

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

Я попытался запустить ваш код, и папка Content.IE5 все еще появилась, как можно видеть на этом рисунке: https://s11.postimg.org/a5xadelmr/Pic_256.png Daniel 8 лет назад 0
Я не могу проверить ваш случай напрямую, так как на Win10 интернет-кеш организован по-другому, но я протестировал каталог, который я создал, с текстовым файлом в нем, и он работал как положено. Тем не менее, дальнейшие исследования показывают, что текстовые файлы в скрытых исключаются, а поиск скрытых подкаталогов _are_, что кажется совершенно иррациональным. Поэтому я изменил свой ответ на тот, который работает, независимо от скрытого статуса. AFH 8 лет назад 0

Похожие вопросы