Чтобы избежать двух фиксированных имен папок, после оператора FOR / r добавьте:
set "d=%%a"
if /i not "!d:~0,17!"=="c:\program files\" if /i not "!d:~0,11!"=="c:\windows\" (
В нижней части блока FOR добавьте дополнительное закрытие
)
Нежелательные имена файловбудет сгенерирован FOR, но не будет обработан.
В качестве примера создания переменной списка исключенных каталогов замените строку FOR на:
set xd="c:\program files\" c:\windows\ "c:\program files (x86)" %*
For /r "c:\" %%a in ("*.exe" "*.msi") DO (
set "d=%%a"
for %%x in (%xd%) do if not "!d:%%~x=!"=="!d!" set "d="
if exist d (
В нижней части FORблок добавить дополнительное закрытие
)
Файлы в каталогах в списке% xd% не будут обрабатываться.Также вызывающая сторона может указать дополнительные каталоги, которые не должны обрабатываться в качестве аргументов командной строки, например:
myscript "c:\users\all users\" c:\ProgramData\