>>"results\txtmail.txt" findstr /i /p /s mail %userprofile%\*.txt
Теперь, что если я хочу исключить C:\Users\ Имя пользователя \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5 из поиска?
>>"results\txtmail.txt" findstr /i /p /s mail %userprofile%\*.txt
Теперь, что если я хочу исключить C:\Users\ Имя пользователя \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5 из поиска?
После обнаружения, что 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
гарантирует, что имя файла будет напечатано с найденной строкой: обычно он пропускается, когда передается только один файл (может быть другой способ сделать это, но я не часто использую эту команду ).Я проверял это решение, когда комментарий Дэвида Постила появился выше. Я только что заметил это, но я все равно отправлю свой ответ, так как он добавляет пару моментов, которые необходимо учитывать при любом решении.