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:
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
4
5
6
7
8
9
10 z:\> DIR /B Mon FICHIER.txt ScrIPt.Pl z:\> DIR /B /L mon fichier.txt script.pl
2 - Manières Détournées: (Tous ces codes sont testés sous XP PRO SP2 "VER FR")
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> ::
uc1.bat
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
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
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 :::::::::::::::::::::::::::::::::::::::::::::::::::::: :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
3 - Outils Externes "GAWK" "SED" "TR"
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
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"
2- les options "LUlu"
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%/
uc4.bat
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
b) TR
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
c) GAWK
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
on peux utiliser les deux fonctions Built-in Tolower() et ToUpper() de façon très simple:
bien sur on peux utiliser GAWK comme filtre mais aussi comme simple commande:
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
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"
Partager