IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

JAVA et Commande DOS


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut JAVA et Commande DOS
    Bonjour à tous et à toutes

    Je rencontre un petit problème pour finaliser mon application java, je m'explique:

    J'arrive à exécuter des commandes ms dos via java.La commande qui me pose problème est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cacls "C:\Documents and Settings\xxxx\Mes documents\test" /P utilisateur:F
    En effet lorsque j'effectue cette commande sous terminal dos, je dois confirmer mon choix "Êtes vous sur :O/N"

    J'aimerais pouvoir passer ou accepter cette vérification dans mon code java.

    Merci

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Pour résoudre ton problème, il faut géré les flux d'entrée / sortie !
    Je pense que le plus simple serait d'utiliser l'api shell d'adiguba.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Merci pour ta réponse rapide.

    J'ai essayé d'utiliser l'API que tu m'as fournis, cependant elle ne semblait pas fonctionner (ou du moins je n'ai pas réussis à m'en servir).
    J'ai contourner mon problème en utilisant une commande DOS quasiment identique mais qui ne demande pas d'autorisation (pas bien ).

    Je suis maintenant confronté à un nouveau problème... Et celui-ci n'est pas contournable

    Donc dans mon code java j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd1 = "cacls " + '"' + chemin + '"' + " /E /R " + nomUtilisateur;
    Process p = run.exec(cmd1);
    Ce code marche dans la plupart des cas... Sauf quand le nomUtilisateur contient un accent. J'ai parcouru internet à la recherche d'information, et j'ai trouver certaines solution qui n'ont pas fonctionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd1 = "cacls " + '"' + chemin + '"' + " /E /R " + URLEncoder.encode(nomUtilisateur,"CP850");
    Process p = run.exec(cmd1);
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.setOut(new PrintStream(System.out, true, "cp850"));
    	System.setErr(new PrintStream(System.err, true, "cp850"));
    Mais rien n'y fait.

    Si quelqu'un à une solution a proposer, je suis preneur.

    Merci

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    est-ce que tu as tenté cette soluce ?

    http://www.developpez.net/forums/d92...eciaux-chemin/

    à savoir passer un array de String. C'est d'ailleurs étrange...

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il ne faut pas utiliser Runtime.exec(String) mais la version avec un tableau. Et de manière générale depuis Java 5 il ne faut pas utiliser les méthodes Runtime.exec() mais la classe ProcessBuilder...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	ProcessBuilder builder = new ProcessBuilder("cacls", chemin, "/E", "/R", nomUtilisateur);
    	Process process = builder.start();
    	...

    Citation Envoyé par rafa69 Voir le message
    Ce code marche dans la plupart des cas... Sauf quand le nomUtilisateur contient un accent.
    Et dans ce cas là quel est le problème ?!?


    Cela ne viendrais pas de "cacls" ? Car sur mon poste lorsque je tape "cacls" j'obtiens ceci :
    REMARQUE : Cacls étant désapprouvé, utilisez Icacls.
    a++

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Salut et merci pour vos réponses.

    Donc déjà à l'avenir j'utiliserais ProcessBuilder (merci adiGuba).

    Ensuite le problème lorsque le nomUtilisateur comprenait un accent est que j'obtenais le message d'erreur suivant :Le mappage entre les noms de compte et les ID de sécurité n'a pas été effectué. Ce qui signifie que le nomUtilisateur n'existe pas (or il existe).

    J'ai réussi a afficher le nomUtilisateur envoyé par la méthode run.exec(). Pour un utilisateur nommé rené le nomUtilisateur envoyé est ren%8%B. Et ce quelque soit la classe utilisé (Runtime ou ProcessBuilder)

    J'ai finalement réussi à résoudre mon problème en m’apercevant qu'en envoyant rene au lieu de rené cela marchais.

    Je ne sais pas pourquoi mais c'est comme si la commande CACLS faisait le lien entre le nom avec et sans accent. D'ailleurs si quelqu'un sait, je serais curieux de savoir.

    Il m'a donc suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProcessBuilder builder = new ProcessBuilder("cacls", chemin, "/E", "/R", nomUtilisateur.replaceAll("é", "e");
    	Process process = builder.start();
    Merci a tous pour vos réponses et bonne continuation !

  7. #7
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    N'oublie pas qu'il ne faut pas uniquement se contenter de remplacer que les occurences de 'é' car il existe d'autres caractères accentués!

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Tout a fait d'accord avec toi. Cependant j'éviterais dans le futur de créer des nom d'utilisateur accentué.
    La gestion des caractères spéciaux + codage des caractère java différent du codage des caractère sous DOS = Grosses Complications
    Après je suis sur que certaines personnes y arrivent très bien, je ne fais pas partie de ceux la

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Applet Java et commande DOS?
    Par teetee75 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 11/02/2014, 11h37
  2. comment recuperer le resultat d'une commande dos en java?
    Par trunks-tr dans le forum Général Java
    Réponses: 49
    Dernier message: 06/06/2006, 14h25
  3. commande dos sous java
    Par yann999 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 12/05/2006, 14h18
  4. faire tourner une commande dos sous application java
    Par Terminator dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 02/05/2006, 22h33
  5. lancement de commande DOS en java
    Par horkets dans le forum Général Java
    Réponses: 23
    Dernier message: 12/04/2006, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo