Herbert,
 
na verdade dir, md e outros náo são programas e sim comandos interpretados por command.com ou cmd.exe. Portanto para executa-los, vc deve executar um destes aplicativos passando o comando apropriado.
 
Tente executar da seguinte forma:
 
String c = "command.com /c dir";
String c = "cmd.exe /c dir"; 
 
Da mesma forma, nao sei se o redirecionamento de saida (>) funciona exectado de dentro do Java. Se nao funcionar, vc pode obter a saida do programa pelo metodo:
 
Process p = rt.exec(c);
InputStream in = p.getInputStream();
 
[]s
 
Luis Sergio
 
----- Original Message -----
Sent: Friday, November 08, 2002 2:44 PM
Subject: [java-list] Dúvidas sobre java.lang.Runtime

Eu estava “brincando” um pouco com a java.lang.Runtime e me deparei com o seguinte problema: o exemplo abaixo deveria executar os comandos (ou processos) numa boa, alguns até funcionam, mas quando é algo “via prompt” de comando não funciona de jeito nenhum (alguém até havia colocado um exemplo em uma mensagem anterior da lista: String c = "dir c: > dir.txt"; mas isto não dá certo)! Não sei se estou fazendo algo errado...

 

Como eu executo o que eu quiser como se estivesse em um prompt de comando normal? (String c = "explorer.exe c:\\j2sdk1.4.1\\bin"; funciona!).

Estou rodando este exemplo no XP, mas creio veementemente que não tem nada relacionado a este fato.

 

(este código está funcionando, só não sei como implementar direito os comandos para “c”)

 

public class RuntimeTeste {

    public static void main(String[] args) {

        Runtime rt = Runtime.getRuntime();

       

     String c = "explorer.exe c:\\j2sdk1.4.1\\bin";                                                                         // este funciona! Abre o Explorer na pasta especificada

     // String c = "\"C:\\Arquivos de programas\\Half-Life\\hl.exe\" -console -game cstrike";             // este funciona! Executa o Counter-Strike

     // String c = "regedit.exe";                                                                                                  // este funciona! Executa o regedit

 

     // agora segue o que não funciona:

 

     // String c = "C:\\WINNT\\System32\\gpedit.msc";                 // java.io.IOException: CreateProcess: C:\WINNT\System32\gpedit.msc error=193

     // String c = "dir c: > dir.txt";                                                // java.io.IOException: CreateProcess: dir c:\ > dir.txt error=2

     // String c = "mkdir c:\\teste";                                              // java.io.IOException: CreateProcess: md c:\teste error=2 

     // String c[] = {"mkdir", "c:\\teste"};                                      // java.io.IOException: CreateProcess: mkdir c:\teste error=2

     // String c[] = {"dir", "c:\\", ">", "dir.txt"};                               // java.io.IOException: CreateProcess: dir c:\ > dir.txt error=2

     // String c = “cmd.exe”;                                                      // ???????????

 

        try {           

            rt.exec(c);

        }

        catch(Exception e) {

          System.err.println(e);

        }

    }

}

 

Esqueçam StringTokenizer, pois já tentei também...

Já dei uma lida na API em java.lang.Runtime, mas o que tem lá é vago.

Se alguém souber o jeito certo de se fazer isto eu agradeço desde já.

 

Herbert Alexander Faleiros
Administrador de redes NT/W2K
Programador Java / Webmaster
Graduando em Física - UFSCar
[EMAIL PROTECTED]
[EMAIL PROTECTED]
(16) 9117-2962

 

Reply via email to