[Resolvido] Como gerar saídas horizontais no Prompt? (ao invés de verticais)

17 respostas
edsonlopes

Pessoal, estou fazendo um sistema para ser executado via Bash (prompt de comandos), e tenho uma situação que gostaria de listar uma espécie de “Loading”, dessa forma:

C:\> Deseja fazer a ação? [S/N] S 
C:\> 0% [#####          ] 100%

Onde o “#” seria o progresso do processo. (não cresce nem horizontalmente, nem verticalmente. Só o valor da mesma linha é alterado.)

C:\> Deseja fazer a ação? [S/N] S
C:\> Carregando.....................

Onde o “.” seria o progresso do processo. (Não cresce verticalmente “modelo padrão de saída”, pois só cresce horizontalmente, até o processo terminar.)

Como eu posso obter esses efeitos no terminal :?:

17 Respostas

Poneis123

vc ta fazendo isso em java?!

o que vc está usando do java?

edsonlopes

Sim, é com o Java…

Como assim: “o que vc está usando do java?” Não entendi a sua pergunta…
Eu estou usando o java normal, em forma de aplicação via linha de comando, pois é um utilitário de administração, então não é necessário uma interface gráfica.

rogelgarcia

Pra nao falar que nao tem jeito…

Desconheço alguma forma de fazer isso…

Usando as API padrão de java…

edsonlopes

Curioso, isso é algo até normal em sistemas Bash… A todo momento, até mesmo para instalar algo via apt-get no Linux eu vejo esse tipo de recurso, mas não tenho idéia de como seria isso em Java… (E quebraria muito o meu galho, pois evitaria aquele lixo de linha na saída da informação)

C:\> Processando: 10% C:\> Processando: 20% C:\> Processando: 30% C:\> Processando: 40% C:\> Processando: 50% ... .. .

Poneis123

Acho q eu não entendi mto bem tb rs

Assim, vc ta querendo uma forma de mostrar o progresso no formato 0% [##### ] 100% pois no outro formato que vai adicionando os “.” não mostra pro usuario se o progresso real (se está começando ou terminando etc.) é isso?

Poneis123

edsonlopes:
Curioso, isso é algo até normal em sistemas Bash… A todo momento, até mesmo para instalar algo via apt-get no Linux eu vejo esse tipo de recurso, mas não tenho idéia de como seria isso em Java… (E quebraria muito o meu galho, pois evitaria aquele lixo de linha na saída da informação)

C:\> Processando: 10% C:\> Processando: 20% C:\> Processando: 30% C:\> Processando: 40% C:\> Processando: 50% ... .. .

Ah ta, vc não quer adicionar linhas novas né, quer alterar a linha existente para ficar uma barra de progresso…

tb num sei se da pra fazer isso não

rogelgarcia

edsonlopes:
Curioso, isso é algo até normal em sistemas Bash… A todo momento, até mesmo para instalar algo via apt-get no Linux eu vejo esse tipo de recurso, mas não tenho idéia de como seria isso em Java… (E quebraria muito o meu galho, pois evitaria aquele lixo de linha na saída da informação)

C:\> Processando: 10% C:\> Processando: 20% C:\> Processando: 30% C:\> Processando: 40% C:\> Processando: 50% ... .. .

O problema é que a saida padrão é tratada como OutputStream… num OutputStream nao tem como vc voltar e escrever denovo…

Teria que ter uma API que usasse os recursos do prompt…

edsonlopes

Poneis123:
edsonlopes:
Curioso, isso é algo até normal em sistemas Bash… A todo momento, até mesmo para instalar algo via apt-get no Linux eu vejo esse tipo de recurso, mas não tenho idéia de como seria isso em Java… (E quebraria muito o meu galho, pois evitaria aquele lixo de linha na saída da informação)

C:\> Processando: 10% C:\> Processando: 20% C:\> Processando: 30% C:\> Processando: 40% C:\> Processando: 50% ... .. .

Ah ta, vc não quer adicionar linhas novas né, quer alterar a linha existente para ficar uma barra de progresso…

tb num sei se da pra fazer isso não

Exatamente isso que quero… Quero escrever somente em uma linha, ou ela sólida, como no primeiro exemplo, ou ela sendo aumentada horizontalmente, mas não para abaixo (verticalemente)

edsonlopes

Mas existe essa API? :slight_smile:

rogelgarcia

Foi o que eu falei no inicio… pra nao falar que nao tem jeito

Eu digo… desconheço alguma forma :smiley:

edsonlopes

Pior é que eu nem sei como se procurar isso no Google para saber mais a respeito… Já olhei várias formas de I/O do java via Shell, mas nada parecido com o que necessito…

Vou gastar mais um pouco de tempo nesse problema, e se não encontrar nada, vou fazer da forma que dá, e passo para frente…

rogelgarcia

Já te falo… I/O nao é o caminho

Poneis123

o q vc ta usando hj pra mostrar no prompt de comandos os textos? (mesmo que na vertical)?

é que se executar esse método por exemplo: ele adiciona na horizontal:
public static void main (String args[])
  {
    System.out.print("tst");    
    for(int i=0; i<10; i++)
    {
      try {  
        Thread.sleep(1000); //espera 1 segundo
      } catch (InterruptedException ignored) {  
      }  
      System.out.print(".");  
    }
    
  }
rogelgarcia

Ops… acho que nao li direito a sua pergunta :smiley:

Como o colega falou System.out.print ao invés de println… nao resolve?

rogelgarcia

Isso aqui nao tem jeito (pelo que eu conheço)

0% [#####          ] 100%

Mas isso tem

Carregando.............
edsonlopes

String Input / String Output…

O nome já diz, não?

system.out.println("Bla");
out.print("Bla");
String entrada = in.readLine();

É desse “in” e “out” que estava falando… Dos meios de entrada e saídas de String do console via Java :smiley:

edsonlopes

rogelgarcia:
Ops… acho que nao li direito a sua pergunta :smiley:

Como o colega falou System.out.print ao invés de println… nao resolve?

Putz, mas vai ser eu ignorante assim! Caramba, era mesmo! Resolve sim! rogelgarcia e Poneis123 valeu!
Show de bola, problema resolvido! Uma linha seguida da outra já me resolve esse problema, e não sujo tanto a tela… (Resultado: Cliente feliz!)

Valeu pessoal! Tópico resolvido! :smiley:

Criado 18 de março de 2010
Ultima resposta 18 de mar. de 2010
Respostas 17
Participantes 3