Criar um ponto de restauração pelo Java

15 respostas
javafxjava
777

Olá, estou querendo fazer o Java criar um ponto de restauração no Windows da pessoa, pois estou usando um comando de CMD para fazer isto, e eu quero fazer isso só com o Java mesmo, quem puder me ajudar, agradeço.

15 Respostas

1

Seria legal fazer uma interface web. Acho que seria possível se você criar uma janela onde existe um botão que fica em um subprocesso executando o comando em cmd. Estou pensando em algo, só um momento. Essa questão é interessante. ^^ Ficaria feliz em ajudar

1

Algo assim véi - estou me baseando nas informações desses sites

a) https://javatutorial.net/swing-jframe-basics-create-jframe
b) https://examples.javacodegeeks.com/java-jframe-example/
c) Execultar comando cmd via java
d) https://www.softdownload.com.br/como-criar-pontos-restauracao-windows-7-8-10.html
e) [RESOLVIDO]como chamar um método que está em outra classe?

comando.bat

cmd.exe /k "wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "%DATE%""

programa777.java

import java.io.IOException;
import java.util.Scanner;

public class programa77 {
public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("cmd.exe comando.bat");

Scanner leitor = new Scanner(process.getInputStream());

while (leitor.hasNextLine()) { 
        System.out.println(leitor.nextLine());
  }
 } catch (IOException e) { 
   e.printStackTrace();  
    }
   }
}

interface777.java

import java.awt.GraphicsConfiguration;
import javax.swing.JFrame;

public class interface777{
	
	static GraphicsConfiguration interface777gc;
    // interface777gcé gc

	public static void main(String[] args){
		JFrame interface777= new JFrame(interface777gc); 
        
        // interface777 é JFrame 

		interface777.setTitle("777 guj.com.br/t/criar-um-ponto-de-restauracao-pelo-java/393858/3");
		interface777.setSize(600, 400);
		interface777.setLocation(200, 200);
		interface777.setVisible(true);
		interface777.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		interface777.setResizable(false);
                programa777 programa777 = new programa777();
                programa777.programa777 ();

	}
}
777

Mas tipo, eu to querendo que faça automático pra pessoa em silent.

777

E também, eu tava fazendo algo igual, tava fazendo o CMD fazer isso pela pessoa.

1

Você pode criar um arquivo separado e chamar esse arquivo automaticamente em modo silencioso também.

Exemplo

comando.bat

cmd.exe /k “wmic.exe /Namespace:\root\default Path SystemRestore Call CreateRestorePoint “%DATE%””

Dúvida

Daí você pode chamar dentro do java comando.bat, certo? Talvez seja possível, rodar o java em modo silencioso. Mas, como você saberia se ele está executando ou se parou? Mesmo que seja em modo silencioso, deve ter um ícone de notificação certo ou não?

777

sim, eu tinha esquecido dessa parte. Valeu aí, vou colocar no meu código.

1

Você poderia responder minha dúvida ? :face_with_raised_eyebrow:

Você pode chamar dentro do java comando.bat, certo? Talvez seja possível, rodar o java em modo silencioso. Mas, como você saberia se ele está executando ou se parou? Mesmo que seja em modo silencioso, deve ter um ícone de notificação certo ou não?

777

Chamar o arquivo .bat no Java é MUITO fácil, se o bat for muito grande e demorado recomendo que use uma Task (não sei muito bem, mas não é tão difícil). Agora saber se ele está executando ou se parou, você deve fazer ações para enquanto ele estiver aberto e quando ele fechar, acho que se você procurar na gringa (pois a comunidade brasileira acho dificil de encontrar, mas tem chance) você já acha.

Vou tomar banho, daqui a no máximo 10 minutos eu volto.

1

Seria legal programar uma data, hora ou dia específico usando o Windows task scheduler

Solução segundo esse website

  1. Acesse Windows Task Scheduler
  2. Acesse as propriedades da tarefa: Iniciar programa , agora acesse a parte Programa/script e coloque seu arquivo de script bat C:\Users\user\comando.bat
  3. Agora na aba Adicionar argumentos ( área opcional) <Se necessário - depende do seu script>
  4. Selecione a aba Ação, Clique na opção Editar ou Clique em Iniciar em ( opcional ) e configure o local do script C:\users\user\
  5. Clique em OK

ou

  1. Procure por Ação
  2. Acesse Configurações.
  3. Selecione a opção Iniciar em ( essa é opção opcional )
777

Você pode executar comandos do bat no Java, agora pra enviar uma mensagem pro console retornando o mesmo que o cmd, ou seja, receber o estado da execução acho que você deve usar o

Process.getOutputStream()
1

Como :face_with_raised_eyebrow:

Process.getOutputStream("cmd.exe /k "wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "%DATE%""
")
777

Pegue este código de base, analise-o e depois insira em seu código.

System.out.println( "hello" );
    String line;

    Process process = Runtime.getRuntime ().exec ("cmd.exe /c slcanterm.exe");

    InputStream stderr = process.getErrorStream ();
    InputStream stdout = process.getInputStream ();

    BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
    BufferedReader error = new BufferedReader (new InputStreamReader(stderr));

    new Thread() {
        public void run() {
            try {
                String err;
                while ((err = error.readLine ()) != null)     
                    System.out.println ("[Stderr] " + err);
            } catch (Exception e) {
                e.printStackTrace();
            }

    }}.start();

    while ((line = reader.readLine ()) != null)     
        System.out.println ("[Stdout] " + line);

Fonte: StackOverFlow (Gringo)

1

Código

comando.bat

cmd.exe /k "wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "%DATE%""

programa.java

System.out.println( "hello" );
    String line;

    Process process = Runtime.getRuntime().exec("cmd.exe /c comando.bat");

    InputStream stderr = process.getErrorStream();
    InputStream stdout = process.getInputStream();

    BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
    BufferedReader error = new BufferedReader(new InputStreamReader(stderr));

    new Thread() {
        public void run() {
            try {
                String err;
                while ((err = error.readLine ()) != null)     
                    System.out.println ("Criando ponto de restauração" + err);
            } catch (Exception e) {
                e.printStackTrace();
            }

    }}.start();

    while ((line = reader.readLine ()) != null)     
        System.out.println ("Ponto de restauração não foi criado" + line);
777

na vdd
era melhor vc usar

Process process = Runtime.getRuntime().exec(new String[] {"cmd.exe", "/c", "comando.bat"});
1

Puxa… não sabia, valeu :smiley:

Criado 13 de outubro de 2019
Ultima resposta 14 de out. de 2019
Respostas 15
Participantes 2