Criar um ponto de restauração pelo Java

15 respostas
javafxjava
7

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 ();

	}
}
7

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

7

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?

7

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?

7

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 )
7

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%""
")
7

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);
7

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