Maison >Java >javaDidacticiel >Comment puis-je exécuter des commandes Shell à partir d'un programme Java ?

Comment puis-je exécuter des commandes Shell à partir d'un programme Java ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-18 10:50:11616parcourir

How Can I Run Shell Commands from within a Java Program?

Exécuter des commandes Shell à partir de Java : un guide détaillé

En Java, vous pouvez exécuter des commandes système à l'aide de la méthode Runtime.exec(). Cependant, comprendre comment exécuter des commandes peut être difficile.

Ouverture d'une invite de commande

Le code que vous avez fourni ouvre correctement l'invite de commande :

Runtime rt = Runtime.getRuntime();
rt.exec(new String[]{"cmd.exe","/c","start"});

Cela ouvre une nouvelle fenêtre d'invite de commande.

Exécution Commandes

Pour exécuter une commande dans l'invite de commande, vous pouvez ajouter la commande à la ligne de commande avant de l'exécuter. Par exemple, pour changer de répertoire et exécuter une commande spécifique :

Changer de répertoire

// Change directory and run "dir" command
ProcessBuilder builder = new ProcessBuilder(
    "cmd.exe", "/c", "cd \"C:\Program Files\Flowella\" && dir");

La ligne de commande ci-dessus indique à cmd.exe d'exécuter les commandes suivantes dans l'ordre :

  1. Changez le répertoire actuel en "C:Program FilesFlowella"
  2. Exécutez le Commande "dir" dans ce répertoire

Exécution d'autres commandes

Vous pouvez exécuter n'importe quelle commande en modifiant la ligne de commande après "cd". Par exemple, pour exécuter la commande "ping" :

ProcessBuilder builder = new ProcessBuilder(
    "cmd.exe", "/c", "cd \"C:\Program Files\Flowella\" && ping www.google.com");

Utilisation d'un ProcessBuilder

La classe ProcessBuilder offre un moyen plus polyvalent d'exécuter des commandes. Il vous permet de :

  • Rediriger les flux d'erreurs et de sortie standard du processus
  • Définir les variables d'environnement
  • Définir le répertoire de travail

Dans l'exemple ci-dessus, nous redirigeons l'erreur standard du processus vers sa sortie standard pour simplifier la lecture du sortie.

Exemple d'utilisation

Le code suivant exécute la commande "dir" dans le répertoire spécifié :

import java.io.*;

public class CmdCommand {
    public static void main(String[] args) throws Exception {
        String dir = "C:\Program Files\Flowella";
        ProcessBuilder builder = new ProcessBuilder(
            "cmd.exe", "/c", "cd \"" + dir + "\" && dir");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) { break; }
            System.out.println(line);
        }
    }
}

Ce code modifie le courant répertoire vers "C:Program FilesFlowella" et exécute la commande "dir", imprimant la sortie sur la console.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn