Я новичок в программном обеспечении Windows и переполнении стека, поэтому, пожалуйста, простите меня, если я попрошу все, что явно очевидно для вас, опытных, талантливых людей. Я использую пакет Windows (.bat) для поиска файлов, содержащих определенную строку, с использованием findstr
. Однако я пытаюсь пропустить определенные папки в каталоге.FINDSTR и пропущенные папки
setlocal EnableDelayedExpansion
set basedir=C:\folder
for /f %%g in ('dir /a:-h /b %basedir% ^| findstr /v "Projects" ^| findstr /v "Archive"') do (
findstr /i /m /s /c:"request" %basedir%\%%g *.* > %basedir%\Projects\list.txt
)
Когда я смотрю в list.txt, выходной файл из findstr
, я считаю, что папки я сказал это не поиск Поиск. То есть, результат выглядит следующим образом:
C:\folder\somefile.rtf
C:\folder\Requests\anotherfile.rtf
C:\folder\Projects\dontsearchme.txt
C:\folder\Archive\dontsearchmeeither.txt
C:\folder\Archive\Projects\dontsearchme.txt
Если бы работал правильно, был бы включен только C:\folder\somefile.rtf
и C:\folder\Requests\anotherfile.rtf
в list.txt. Для проверки кода цикла я использовал следующее:
setlocal EnableDelayedExpansion
set basedir=C:\folder
for /f %%g in ('dir /a:-h /b %basedir% ^| findstr /v "Projects" ^| findstr /v "Archive"') do (
echo %basedir%\%%g
)
Этот код работает по желанию; он пропускает папки «Проекты» и «Архив». Я предполагаю, что проблема имеет какое-то отношение к тому, как я звоню findstr
, но я не смог определить ошибку своих способов. Любое понимание было бы высоко оценено!
Большое спасибо!
-Alex
Вы пытались взять '/ s' из своего findstr? –
@MattWilliamson: Я редактировал вопрос, чтобы показать, что есть подпапки, которые я _do_ хочу найти. Когда я удаляю '/ s',' findstr' не попадает в нужные папки. –
Хорошо. Я возьму его из «Findstr», но добавлю его в 'DIR' и посмотрим, сделает ли это это. –