Я новичок в пакетном программировании для Windows и в Stack Overflow, поэтому, пожалуйста, простите меня, если я спрошу что-то очевидное для вас, опытных и талантливых людей. Я использую пакет Windows (.bat) для поиска файлов, содержащих определенную строку, используя 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
Если бы он работал правильно, в list.txt были бы включены только C:\folder\somefile.rtf
и C:\folder\Requests\anotherfile.rtf
. Чтобы протестировать циклический код, я использовал следующее:
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
, но я не смог определить ошибку моего пути. Любое понимание будет высоко оценено!
Большое спасибо!
-Алекс
/s
из вашего findstr? - person Matt Williamson   schedule 19.11.2013/s
,findstr
не попадает в нужные папки. - person Alex A.   schedule 19.11.2013Findstr
, но добавил вDIR
и посмотрел, получится ли. - person Matt Williamson   schedule 19.11.2013