for /f
é seu amigo.
for /f "usebackq tokens=1,2,3 delims=:" %A in ('ipconfig ^| Find "Default Gateway" ^| Findstr/N "." ^| Findstr/B "1:"') do @if not defined MYVAR set MYVAR=%~C
... pode fazer o truque.
Editar: alterou o bloco de código para ler o valor terceiro e não o segundo, e precisou escapar dos canais.
Você poderia também diminuir para:
for /f "usebackq tokens=1,2,3 delims=:" %A in ('ipconfig ^| Find "Default Gateway" ^| Findstr/N "."') do @if not defined MYVAR set MYVAR=%~C
... como, tecnicamente , o segundo findstr
(onde você limita ao primeiro resultado) é realmente tratado pelo if not defined