begin process at 2012 02 09 09:58:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GETOPTIONS : RÉCUPÈRE LES ARGUMENTS EN LIGNE DE COMMANDE

GETOPTIONS : RÉCUPÈRE LES ARGUMENTS EN LIGNE DE COMMANDE


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :getopt, arguments, main Niveau :Débutant Date de création :22/04/2007 Date de mise à jour :25/06/2008 20:00:17 Vu / téléchargé :11 463 / 282

Auteur : Twinuts

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce petit bout de code permet d'analyser simplement les arguments passés en paramètre à la fonction 'main' d'une application.

L'objet GetOpts implémente les méthodes des interfaces Iteratior et Enumeration et permet donc de :
  - récupérer l'argument associé à une option.
  - tester si un argument était obligatoire ou non pour l'option.
  - tester si il y a au moins une option trouvée.
  - etc...

seule bémol, le code ne gère pour le moment que les options courte...
edit: je viens d'ajouter la gestion des options longues et/ou courte, options courtes collées, arguments collés

PS : Je sais bien qu'il existe des classes (genre d'apache) pour faire ce petit boulot mais bon personnellement j'aime pas vraiment utiliser d'autres classes que celles créés par sun :P

Source

  • package org.cs;
  • import java.util.Enumeration;
  • import org.cs.getopt.GetOptElement;
  • import org.cs.getopt.GetOpts;
  • import org.cs.getopt.LongOption;
  • /**
  • *
  • * File : org.cs.GetOptsTest.java <br>
  • * Description : Classe de test pour l'objet GetOpts<br>
  • * @author Twinuts
  • */
  • public class GetOptsTest {
  • public static void main(String[] args) {
  • // pour switcher sans toucher le code ^^
  • boolean short_opt = false;
  • Enumeration<GetOptElement> opts = null;
  • if(!short_opt) {
  • // construction de la liste d'options longues et courtes
  • LongOption options [] = new LongOption[] {
  • new LongOption("help", 'h', LongOption.REQUIRED_ARGUMENT),
  • new LongOption("up", 'u', LongOption.REQUIRED_ARGUMENT),
  • new LongOption("plop", 'p', LongOption.REQUIRED_ARGUMENT),
  • new LongOption('f', LongOption.NO_ARGUMENT),
  • new LongOption("j", 'z', LongOption.REQUIRED_ARGUMENT)
  • };
  • // création de l'objet GetOpts
  • opts = new GetOpts(args, options);
  • } else
  • // création de l'objet GetOpts en lui passant la liste d'options courtes
  • // ici le ':' signifit que l'option attend un argument
  • opts = new GetOpts(args, "h:u:p:g:1:fj:");
  • // liste d'options
  • while(opts.hasMoreElements()) {
  • // récupération de l'option
  • GetOptElement e = opts.nextElement();
  • // affichage des info
  • System.err.println("Short Option : " + e.getShortOption() +
  • ", Long Option : " + e.getLongOption() +
  • ", Argument : " + e.getArgument() + ", Required : " + e.isRequiredArgument());
  • }
  • }
  • }
package org.cs;

import java.util.Enumeration;

import org.cs.getopt.GetOptElement;
import org.cs.getopt.GetOpts;
import org.cs.getopt.LongOption;

/**
 * 
 * File : org.cs.GetOptsTest.java <br>
 * Description : Classe de test pour l'objet GetOpts<br>
 * @author Twinuts
 */
public class GetOptsTest {

	public static void main(String[] args) {
		// pour switcher sans toucher le code ^^
		boolean short_opt = false;
		Enumeration<GetOptElement> opts = null;
		if(!short_opt) {
			// construction de la liste d'options longues et courtes
			LongOption options [] = new LongOption[] {
					new LongOption("help", 'h', LongOption.REQUIRED_ARGUMENT),
					new LongOption("up", 'u', LongOption.REQUIRED_ARGUMENT),
					new LongOption("plop", 'p', LongOption.REQUIRED_ARGUMENT),
					new LongOption('f', LongOption.NO_ARGUMENT),
					new LongOption("j", 'z', LongOption.REQUIRED_ARGUMENT)
			};
			// création de l'objet GetOpts
			opts = new GetOpts(args, options);
		} else
			// création de l'objet GetOpts en lui passant la liste d'options courtes
			// ici le ':' signifit que l'option attend un argument
			opts = new GetOpts(args, "h:u:p:g:1:fj:");
		// liste d'options
		while(opts.hasMoreElements()) {
			// récupération de l'option 
			GetOptElement e = opts.nextElement();
			// affichage des info
			System.err.println("Short Option : " + e.getShortOption() + 
					", Long Option : " + e.getLongOption() +
					", Argument : " + e.getArgument() + ", Required : " + e.isRequiredArgument());
		}
	}
}

 Conclusion

Voir la capture pour l'exemple d'utilisation.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   GetOptions
    •   bin
      •   org
        •   cs
          •   getopt
            • GetOptElement.classTélécharger ce fichier [Réservé aux membres club]1 147 octets
            • GetOpts$GetLongOptionsEnum.classTélécharger ce fichier [Réservé aux membres club]1 253 octets
            • GetOpts.classTélécharger ce fichier [Réservé aux membres club]6 500 octets
            • LongOption.classTélécharger ce fichier [Réservé aux membres club]1 799 octets
          • GetOptsTest.classTélécharger ce fichier [Réservé aux membres club]1 903 octets
    •   src
    • build.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier557 octets
    • COPYINGTélécharger ce fichier [Réservé aux membres club]35 147 octets
    • COPYING.LESSERTélécharger ce fichier [Réservé aux membres club]7 639 octets
    • getOpts.jarTélécharger ce fichier [Réservé aux membres club]7 738 octets
    • snapshot.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier133 976 octets

Télécharger le zip


 Historique

22 avril 2007 21:21:38 :
mauvais zip :P
22 avril 2007 21:27:39 :
Les accents ne sont pas passés ...
25 juin 2008 19:46:36 :
refonte du code, ajout de la gestion des options longues et/ou courte, options courtes collées, arguments collés, etc... bref nouvelle version
25 juin 2008 20:00:17 :
pb image

 Sources du même auteur

Source avec Zip MAC, IP, MASQUE ET NOM DES CARTES RÉSEAUX D'UN PC (JNI)
Source avec Zip Source avec une capture ECRIRE EN COULEURS SUR LA CONSOLE(JNI)
Source avec Zip Source avec une capture MODIFICATION DU VOLUME(GAIN) ET BALANCE(PAN) SUR UN FICHIER ...
Source avec Zip Source avec une capture FILTRE IMAGE SIMPLE
Source avec Zip Source avec une capture FENETRE RONDE (JNI)

 Sources de la même categorie

Source avec Zip Source avec une capture COMPLÉTION AUTOMATIQUE par Julien39
Source avec Zip Source avec une capture [JOGL] ANIMATION 3D DANS UN BOUTON par loloof64
Source avec Zip CALCULATRICE BIEN FAITE (VERSION SIMPLIFIÉE) par Julien39
Source avec une capture YNOT, UN NOUVEAU LANGAGE DE SCRIPT ÉCRIT EN JAVA. par apmneo7114
Source avec Zip KIT DE FICHIERS DE PROGRAMMATION par edouard333

Commentaires et avis

Commentaire de coucou747 le 18/06/2008 11:01:20 administrateur CS

salut
Pourquoi n'implementes tu pas java.utils.<E>Iterator
sinon, si j'ai bien compris ton code, on ne peut pas gerer :
-a -b -c
comme :
-abc
et c'est gennant (cf les recomandations unix au sujet du passage des arguments.)

Commentaire de Twinuts le 18/06/2008 11:36:47 administrateur CS

Salut,

"Pourquoi n'implémentes tu pas java.utils.<E>Iterator"
>> J'ai fait la modification mais je ne l'ai jamais postée ici, je verrais si j'ai le temps de le faire pendant mes vacances.

"sinon, si j'ai bien compris ton code, on ne peut pas gerer :
-a -b -c
comme :
-abc
et c'est gennant (cf les recomandations unix au sujet du passage des arguments.)"
>>je sais bien... lorsque j'ai fait ce code c'était uniquement pour une utilisation super simplifiée du getopt d'unix (ce qui collait à mon besoin). Mais j'en prend bonne note et je vais essayer de voir également si je peux ajouter le support complet des options courtes et longues, mafois je ne garanti pas une nouvelle version dans les jours à venir vu je manque cruellement de temps en ce moment.

cela dit merci pour l'intérêt apporté à ce code :)

Commentaire de Twinuts le 26/06/2008 15:24:45 administrateur CS

voilou modification faite ^^

Commentaire de Marty35 le 10/09/2009 16:38:45

Intéressant et pratique.

Il aurait été sympa d'avoir une doc avec et une javadoc encore mieux ...

Enfin, ça me fait tout de même gagner un peu de temps hormis le dépouillage du script pour voir le fonctionnement et les possiblités.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

java, JNI et DLL [ par Milie ] Bonjour, je vous écris pour un pb de chargement de DLL. J'ai déja fait un tutorial avec JNI de type HelloWorld mais j'ai à present besoin d'intergrer HELP ME Boucle dans main qui marche pas !!! [ par darktonight ] Bon j'ai un gros probleme que je n'explique pas, j'ai une classe de cette forme , c'est un parser SAX qui doit lancer un prgramme à chaque fois qu'ell main non trouvable [ par naji222 ] bonjour en executant un script propore à un logiciel PENEMED avec le contenu suivant#!/bin/sh. ../../config/sethome.sh${JAVA_HOME}/bin/java -classpath Problème de compilation avec javac.Main.compile [ par Kindasch ] Salut les gensJ'essaye de compiler un fichier dans une application et il y a une erreur:the method compile from com.sun.javac.Main is not static ???? Type STATIC (n°2) [ par BSide ] Bonsoir,j'ai un problème de compréhension du caractère "static" d'une variable ou d'une méthode. Je ne comprends pas vraiment à quoi ça sert. En quoi comment déployer une applet via un fichier jnlp [ par ourka631 ] Bonjour,Je vous demande comment on peut déployer une applet, c'est à dire l'exécuter sur un poste client à partir d'un fichier JNLP qui lance le java C'est quoi pour une erreur ? [ par oullafff ] Voici le message qu'il me vient... après avoir réussi à passer la compilation, je lance l'application et:java.lang.NoSuchMethodError: mainException in Exception in thread "main" java.lang.noclassDefFoundError: [ par zzt6p2 ] Salut à tous,Je suis novice je viens d'installer JDK 1.4j'ai configurer le pathen mode command sous windowsje compil mon fichier text avec javacj'obti Erreur Permission J2ME [ par hichame_elkhalfi ] quand je veut executer une application J2ME ya un erreur qui survient, je vous donne ce qu'il me sort//DEBUTProject "UIDemo" loadedRunning with storag Coups de main pour un débutant [ par mockmock ] Bonjour à tous,J'ai trouvé un petit programme Java fait de trois classes sur JavaFR.com. Il s'agit d'un programme de gestion de comptes bancaires. Cel


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,841 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales