java.exe -version e pushd?

5

Eu notei que quando eu executo o seguinte comando

Pushd \RemoteMachine\C$ && java.exe -version

Eu recebo a versão java do computador em que estou. No entanto, quando executo o comando pushd com uma opção de pesquisa, como o comando abaixo, obtenho as informações reais encontradas nesse computador.

Pushd \RemoteMachine\C$ && dir /s java.exe

Por que isso acontece? É possível rodar o java.exe -version em um PC remoto e fazer com que as informações dos computadores sejam exibidas na tela?

    
por sealz 13.06.2011 / 13:57

3 respostas

0

Quando você executa java.exe em seu exemplo, o shell pesquisa apenas o diretório atual (ou seja, \RemoteMachine\C$ ), mas não seus subdiretórios. (Em outras palavras, é mais parecido com dir java.exe sem o /s .)

Como não existe tal arquivo na C:\ da máquina remota, a próxima etapa é pesquisar os diretórios especificados na variável de ambiente %PATH% (que normalmente contém apenas diretórios locais).

Para resolver seu problema, especifique o caminho completo para java.exe . Você nem precisa usar pushd :

C:\> "\RemoteMachine\C$\Program Files\Java\jre6\bin\java.exe" -version
    
por 14.06.2011 / 21:04
2
O

PsExec da SysInternals faz exatamente o que você precisa. Seu exemplo seria:

psexec \RemoteMachine java.exe -version
    
por 13.06.2011 / 16:41
1

Embora o PsExec fizesse o trabalho, não posso usá-lo.

Eu posso executar o comando java.exe -version na máquina remota alterando o diretório quando eu usar pushd .

Pushd \RemoteComputer\C$
cd "Program Files\Java\jre6\bin"
Java.exe -version

Ou tudo de uma vez

Pushd \RemoteComputer\C$ && cd "Program Files\Java\jre6\bin" && java.exe -version && popd
    
por 13.06.2011 / 21:58