Você não precisa da variável intermediária myvar . Se você quiser, basta substituir %myvar% por %1 abaixo.
Você precisa de dois ciclos de expansão.
Opção 1 - CALL
@echo off
call echo %%%1%%
Na primeira fase de análise
-
%%se expande para% -
%1se expande paraJAVA_HOME -
%%se expande para%
Na fase CALL, %JAVA_HOME% se expande para o valor que você está procurando.
Opção 2 - Expansão atrasada
@echo off
setlocal enableDelayedExpansion
echo !%1!
O formulário de expansão atrasada é muito mais fácil de ler
Veja Como o Windows Command Interpreter (CMD.EXE) analisa os scripts? para mais informações