Maison >Java >javaDidacticiel >Comment exécuter des commandes CMD à partir de différents répertoires en Java ?

Comment exécuter des commandes CMD à partir de différents répertoires en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-03 05:48:39641parcourir

How to Execute CMD Commands from Different Directories in Java?

Exécution de commandes CMD via Java

Problème :

Tentative d'exécution de commandes CMD via un Classe Java mais confrontée à des difficultés de compréhension du code. L'utilisateur a besoin de conseils sur la façon d'exécuter des commandes spécifiques, telles que changer de répertoire (cd) et exécuter des commandes dans le nouveau répertoire.

Solution :

Une approche pour l'exécution Les processus depuis des répertoires alternatifs vers le répertoire de travail de votre programme Java consistent à naviguer vers le répertoire souhaité et à exécuter le processus dans la même ligne de commande. Ceci peut être réalisé en demandant à cmd.exe d'exécuter une ligne de commande du formulaire :

cd some_directory && some_program

Exemple de code :

Le code Java suivant montre le passage à un répertoire différent et en exécutant la commande "dir" dans celui-ci répertoire :

import java.io.*;

public class CmdTest {
    public static void main(String[] args) throws Exception {
        ProcessBuilder builder = new ProcessBuilder(
            "cmd.exe", "/c", "cd \"C:\Program Files\Microsoft SQL Server\" && 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);
        }
    }
}

Explication :

  • Ce code utilise ProcessBuilder pour exécuter la commande.
  • Le "redirectErrorStream(true) " L'appel redirige l'erreur standard du processus vers sa sortie standard, ce qui entraîne un seul flux vers lire.

Exemple de sortie :

Le code fourni produit la sortie suivante :

C:\Users\Luke\StackOverflow>java CmdTest
 Volume in drive C is Windows7
 Volume Serial Number is D8F0-C934

 Directory of C:\Program Files\Microsoft SQL Server

29/07/2011  11:03    <DIR>          .
29/07/2011  11:03    <DIR>          ..
21/01/2011  20:37    <DIR>          100
21/01/2011  20:35    <DIR>          80
21/01/2011  20:35    <DIR>          90
21/01/2011  20:39    <DIR>          MSSQL10_50.SQLEXPRESS
               0 File(s)              0 bytes
               6 Dir(s)  209,496,424,448 bytes free

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