Вот сценарий для дампа списка полных путей всех EXE-файлов под "%ProgramFiles %" кроме тех, которые находятся в подкаталоге "Windows NT". Я думал бы, что Вы могли, вероятно, победить это в представление для того, что Вы ищете.
@echo off
for /f "usebackq delims=" %%i in (`dir "%ProgramFiles%\*.exe" /s /a /b`) do call :checkit "%%i"
goto end
:checkit
echo %1 | find /i "%ProgramFiles%\Windows NT\" >NUL 2>NUL
if errorlevel 1 echo %~1
:end
%% F решает к пути к .jar файлу, не к имени каталога, которое является, почему == не работает.
Я предлагаю, чтобы процесс с 2 шагами - сначала сделал
dir /s /b directory\*.jar > temp.txt
и затем
for /F usebackq %%I in (`findstr /V <excluded path> temp.txt`) do call :addcp %%I
/V параметр к findstr печатает все строки, которые не соответствуют строке, в которой Вы передаете. Необходимо смочь использовать подстановочные знаки или даже регулярные выражения для исключения также, если Вы действительно должны.