Caractere pipe "|" em um getRuntime.exec() [Resolvido]

6 respostas
S

Caros,

Estou com uma dificuldade, preciso executar atraves do getRuntime.exec(), o comando "ipconfig | find “IP”, onde, no prompt de comando, me da o resultado desejado, porém na hora de rodar na minha aplicaçãozinha… não vai, ele roda comando, mas não reconhece o caractere pipe “|”, ou seja, meu problema não é saber como o getRuntime.exec funciona, eu uso ele pra rodar vários outros comandos, e vai tudo bem, só o pipe que eu não consegui colocar no meio, vai ai o pedaço do código :

...

tring tests(){
             String texts;
                String res = "";
            boolean a = true;
            try{
            Runtime cmd = Runtime.getRuntime();
              Process processo = cmd.exec("ipconfig | find \"IP\" "); // meu problema está aqui.

Obrigado!

6 Respostas

E

O comando a ser usado é

cmd.exec("cmd /c "ipconfig | findstr IP " ")

se for no Windows , e

… cmd.exec ("/bin/sh -c ‘/sbin/ifconfig | grep “inet addr”’ ") …

no Linux.

S

Vlw kra, funcionou assim, mas curioso que, eu sempre usei "ipconfig | find “IP” desse jeito em vários script .bat, ou até no prório prompt, e funciona, da o mesmo resultado que o findstr, por que raios na app não vai…??

E

Porque o runtime.exec não sabe ler esses comandos “|”, “>” etc. Eles são comandos do shell (cmd.exe no Windows, /bin/bash no Linux). Portanto, você tem de passar explicitamente o shell para o runtime.exec usando o cmd -c ou o /bin/bash -c.

S

Mas estranho kra (não quero ser chato, kkk, nem começar uma confuzão… muito pelo contrário…) ipconfig(sem parametros), funciona, runtime.exec(ipconfig), ele traz o resultado completo do comando. Assim como se eu jogo um dir, ping … e por ai vai sem o cmd /c. Mas o mais iimportante é que resolveu meu problema, vlw kra!

E

Já vi que você nunca testou com dir. Dir não é um executável (o runtime.exec só sabe rodar executáveis).
Dir (ou ls) é um comando do shell.
Para você pegar a saída do dir, teria de usar “cmd /c dir” ou “/bin/sh -c ls”

S

Bom, isso é verdade, fiz confuzão, uso o dir em outra parte da app, mas é com o cmd /c. E consegui entender o pq do ipconfig | … não funcionar sem o cmd /c. Obrigado.

Criado 7 de dezembro de 2010
Ultima resposta 7 de dez. de 2010
Respostas 6
Participantes 2