Почему findstr также ищет файлы за пределами указанного каталога?

Существует простое поведение findstr, которое я не понимаю в Windows 7.

Запускаю батник в режиме администратора (если нет, то просто не запускаются) со следующим скриптом в нескольких разных местах:

@echo off
set local=%~dp0
echo %local%
REM to check that I am where I think I am
findstr /s /i /c:"stringtofind" %local%*.ext

Когда я запускаю этот сценарий из расположения в "C:\Program files\~" или "C:\Program files (x86)\~", выходные данные включают файлы .ext вне каталога %local% и подкаталогов с "stringtofind". На самом деле все соответствующие файлы находятся на жестком диске.

Это поведение не проявляется в любом другом месте, которое я мог бы протестировать (в основном в любом другом каталоге C: \), где появляются только соответствующие файлы в каталоге и подкаталогах.

Есть ли что-то конкретное в каталогах Program files?


person Akadalow    schedule 13.01.2016    source источник


Ответы (1)


Попробуйте изменить на

findstr /s /i /c:"stringtofind" "%local%*.ext"

В упомянутых вами случаях имя каталога содержит пробелы, поэтому findstr находит несколько аргументов. «Использование кавычек» группирует «строки, содержащие пробелы» в одну строку.

person Magoo    schedule 13.01.2016
comment
Это именно то, что происходит, спасибо за решение! - person Akadalow; 14.01.2016