Criar um ponto de restauração pelo Java

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.

1 curtida

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

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

	}
}


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

1 curtida

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

1 curtida

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?

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

1 curtida

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?

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 curtida

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 )

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 curtida

Como :face_with_raised_eyebrow:


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

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 curtida

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

na vdd
era melhor vc usar

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

Puxa… não sabia, valeu :smiley:

1 curtida