Parte do seu problema é que SETX
não é SET
–– depois que você faz
setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m
…, %JAVA_HOME%
não está definido nessa instância do Prompt de Comando.
Você teria que iniciar uma nova instância para obter %JAVA_HOME%
, et. al., set.
Eu sugiro que você faça algo como
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_21
setx JAVA_HOME "%JAVA_HOME%" /m
Não vejo por que você estaria excluindo parte do caminho original. Acessar / modificar a variável do caminho do usuário, não o caminho do sistema pode ser relevante. E você pode querer fazer
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path
para obter a parte do sistema da variável PATH, excluindo a parte do usuário.