Вы должны решить проблему, как с трубой.^|
Просто переключите его на 2^>NUL
Таким образом, вы получите
for /f "tokens=2,*" %%a in ('reg query HKLM\Software\MySoftware\1.0\MyExecutable /v "InstallDir" 2^>NUL ^| findstr InstallDir') do set InstallPath=%%b
Это необходимо, потому что командная часть цикла FOR будет проанализирована два раза.Сначала в контексте вашего командного файла (там 2> NUL неожиданно), а во второй раз в новом контексте cmd.exe (там 2> NUL перенаправляет stderr вашей команды reg
)