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

FAQs Windows Discussion :

Majuscule **vs** Minuscule


Sujet :

FAQs Windows

  1. #1
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut Majuscule **vs** Minuscule
    salut,

    dans ce petit tuto on va essayer de voir plusieurs façons de convertir des chaînes de caractères en minuscule/majuscule et en majuscule/minuscule.

    en natif on n'a pas de commandes qui permettent de traiter ce genre de conversion, le seul moyen "EXPLICITE" est le commutateur /L de la commande DIR

    1 - Commutateur /L

    On peux utiliser le commutateur /L "L comme LOWER" de la commande DIR de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    z:\> DIR /B
     
    Mon FICHIER.txt
    ScrIPt.Pl
     
    z:\> DIR /B /L
     
    mon fichier.txt
    script.pl
    On peux utiliser ce commutateur pour, par exemple, renommer les fichiers en minuscules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FOR /F "DELIMS=" %%X In ('DIR *.TXT /B/L/A:-D') DO RENAME "%%X" "%%X"
    :: ACTUALISER ou <F5> ::
    2 - Manières Détournées: (Tous ces codes sont testés sous XP PRO SP2 "VER FR")

    uc1.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    :::::::::::::::::::::::::::::::::::::::::::::::::::
    :SYNTAXE:
    ::
    :: uc fichier_source
    :: uc fichier_source > fichier_de_sortie
    :::::::::::::::::::::::::::::::::::::::::::::::::::
    @ECHO OFF
    IF NOT EXIST "%~1" EXIT /B 1
    FOR /F "USEBACKDELIMS=" %%A IN ("%~1") DO (
         SET "N.LINE=%%A"
         CALL :UC N.Line        
    )
    GOTO :EOF
     
    :UC
    SETLOCAL DISABLEDELAYEDEXPANSION
    FOR /F "TOKENS=1* DELIMS=\" %%1 IN ('CALL TREE \"%%N.LINE%%"^|FIND ":\"') DO ECHO;%%2
    ENDLOCAL & GOTO :EOF
    uc2.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :SYNTAXE:  
    ::
    :: uc2 bonjour maitre
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::
    @ECHO OFF
    SET "_SET=%*"
    IF NOT DEFINED _SET (SET _SET=abcdefghijklmnopqrstuvwxyz)
    2>$ FIND "" "%_SET%"
    <$  SET/P "$="
    SET "$=%$:*-=%"
    ECHO;%$%
    DEL $ 
    GOTO :EOF
    uc3.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    :::::::::::::::::::::::::::::::::::::::::::
    :SYNTAXE: 
    :: uc3 fichier_source fichier_de_sortie  
    :EXEMPLE:
    :: uc3 c:\minus.txt c:\maj.txt
    :::::::::::::::::::::::::::::::::::::::::::
    @ECHO OFF
    SET "INFILE=%~1"
    SET "OUFILE=%~2"
    IF EXIST "%INFILE%" IF DEFINED OUFILE (
      >'.VBS ECHO DO WHILE NOT WSH.STDIN.ATENDOFSTREAM
     >>'.VBS ECHO WSH.STDOUT.WRITELINE UCASE(WSH.STDIN.READLINE^)
     >>'.VBS ECHO LOOP
         CALL :EXEC
         DEL '.VBS
    ) ELSE (
         EXIT /B 1
    )
    GOTO :EOF
     
    :EXEC
    <"%INFILE%" CSCRIPT /NOLOGO /E:VBSCRIPT '.VBS >"%OUFILE%" 
    GOTO :EOF
    3 - Outils Externes "GAWK" "SED" "TR"

    On peux aussi utiliser des outils externes telque "SED" "TR" "GAWK" qui ont l'avantage de s'utiliser comme
    commandes simple ou bien comme filtre:


    a) GnuSED

    On peux utiliser SED de deux façon pour la conversion des caractères: (minuscule/majuscule) et (majucule/minuscule):

    1- le commutateur "y"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     SET LOWER=abcdefghijklmnopqrstuvwxyz
     SET UPPER=ABCDEFGHIJKLMNOPQRSTUVWXYZ
     ECHO bonjour maitre | SED y/%LOWER%/%UPPER%/
    2- les options "LUlu"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    L = Convertir toute la chaîne en minuscule 
    l = Convertir le premier caractère en minuscule
    U = Convertir toute la chaîne en majuscule
    u = Convertir le premier caractère en majuscule
    uc4.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    ::::::::::::::::::::::::::::::::::::::::::::::::::
    :SYNTAXE:
    :: uc4 fichier_source OPT 
    :: uc4 fichier_source OPT fichier_de_sortie
    :: OPT = L  Minuscule
    ::     = U  Majuscule
    :EXEMPLE:    
    ::
    :: uc4 file.txt U
    :: uc4 c:\folder\help.txt L
    :: uc4 monfichier.txt U c:\output.txt
    :: uc4 file.txt L ufile.txt
    ::
    :: Dependance: GNUSED v 4.2
    :::::::::::::::::::::::::::::::::::::::::::::::::::
    @ECHO OFF & SET OUT=CON
    IF EXIST "%~1" (
     ECHO=%~2 | FINDSTR /RC:"^[UL].$">NUL
      IF NOT ERRORLEVEL 1 (
        IF NOT [%~3]==[] ( SET OUT="%~3" )
          SETLOCAL ENABLEDELAYEDEXPANSION 
            <"%~1" >!OUT! SED "s/.*/\%2&/" 
          ENDLOCAL
        )
    )
    GOTO :EOF
    b) TR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Z:\> ECHO bonjour maitre | TR /a-z/ /A-Z/
    BONJOUR MAITRE
     
    Z:\> CAT FILE.TXT
    ceci est un test
     
    Z:\> TR /a-z/ /A-Z/ < FILE.TXT
    CECI EST UN TEST
    c) GAWK

    on peux utiliser les deux fonctions Built-in Tolower() et ToUpper() de façon très simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Z:\> ECHO bonjour maitre | gawk "{print toupper($0)}"
      BONJOUR MAITRE
     
      Z:\> ECHO BONJOUR MAITRE | gawk "{print tolower($0)}"
      bonjour maitre
    bien sur on peux utiliser GAWK comme filtre mais aussi comme simple commande:

    par exemple un simple code pour convertir tout le contenu des fichiers *.TXT dans
    le répertoire courant en majuscule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FOR %%A IN (*.TXT) DO GAWK "{print toupper($0)}" "%%A" >"$%%A" && MOVE "$%%A" "%%A"

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Tu as aussi la solution bovine, native et sans outils externes, qui n'est pas très compacte mais qui semble être très rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    @echo off
    setlocal enableextensions enabledelayedexpansion
    
    set cmdline=%*
    goto :upcasevar cmdline
    echo !cmdline!
    goto :eof
    
    REM Upcase a variable.
    :upcasevar
    set __upcased=!%1!
    set __upcased=!__upcased:a=A!
    set __upcased=!__upcased:b=B!
    set __upcased=!__upcased:c=C!
    set __upcased=!__upcased:d=D!
    set __upcased=!__upcased:e=E!
    set __upcased=!__upcased:f=F!
    set __upcased=!__upcased:g=G!
    set __upcased=!__upcased:h=H!
    set __upcased=!__upcased:i=I!
    set __upcased=!__upcased:j=J!
    set __upcased=!__upcased:k=K!
    set __upcased=!__upcased:l=L!
    set __upcased=!__upcased:m=M!
    set __upcased=!__upcased:n=N!
    set __upcased=!__upcased:o=O!
    set __upcased=!__upcased:p=P!
    set __upcased=!__upcased:q=Q!
    set __upcased=!__upcased:r=R!
    set __upcased=!__upcased:s=S!
    set __upcased=!__upcased:t=T!
    set __upcased=!__upcased:u=U!
    set __upcased=!__upcased:v=V!
    set __upcased=!__upcased:w=W!
    set __upcased=!__upcased:x=X!
    set __upcased=!__upcased:y=Y!
    set __upcased=!__upcased:z=Z!
    set %1=!__upcased!
    goto :eof

  3. #3
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Tu as aussi la solution bovine, native et sans outils externes, qui n'est pas très compacte mais qui semble être très rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    @echo off
    setlocal enableextensions enabledelayedexpansion
    
    set cmdline=%*
    goto :upcasevar cmdline
    echo !cmdline!
    goto :eof
    
    REM Upcase a variable.
    :upcasevar
    set __upcased=!%1!
    set __upcased=!__upcased:a=A!
    set __upcased=!__upcased:b=B!
    set __upcased=!__upcased:c=C!
    set __upcased=!__upcased:d=D!
    set __upcased=!__upcased:e=E!
    set __upcased=!__upcased:f=F!
    set __upcased=!__upcased:g=G!
    set __upcased=!__upcased:h=H!
    set __upcased=!__upcased:i=I!
    set __upcased=!__upcased:j=J!
    set __upcased=!__upcased:k=K!
    set __upcased=!__upcased:l=L!
    set __upcased=!__upcased:m=M!
    set __upcased=!__upcased:n=N!
    set __upcased=!__upcased:o=O!
    set __upcased=!__upcased:p=P!
    set __upcased=!__upcased:q=Q!
    set __upcased=!__upcased:r=R!
    set __upcased=!__upcased:s=S!
    set __upcased=!__upcased:t=T!
    set __upcased=!__upcased:u=U!
    set __upcased=!__upcased:v=V!
    set __upcased=!__upcased:w=W!
    set __upcased=!__upcased:x=X!
    set __upcased=!__upcased:y=Y!
    set __upcased=!__upcased:z=Z!
    set %1=!__upcased!
    goto :eof
    Salut Mac LAK,

    oui, mais ce que je voulais c'est de trouver d'autres manières de conversion loin des substitutions

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2005, 21h08
  2. problème majuscule et minuscule
    Par rdams dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/10/2005, 15h45
  3. Réponses: 3
    Dernier message: 08/08/2005, 12h24
  4. Différence entre majuscule et minuscule dans une requête
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2004, 15h42
  5. [RICHEDIT] -> Majuscule et Minuscule ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 13h33

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