Batch : changer les caractères accentués
Fermé
MarcusDom
-
27 août 2010 à 14:37
MarcusDom Messages postés 48 Date d'inscription jeudi 17 juin 2010 Statut Membre Dernière intervention 8 juin 2011 - 3 sept. 2010 à 13:53
MarcusDom Messages postés 48 Date d'inscription jeudi 17 juin 2010 Statut Membre Dernière intervention 8 juin 2011 - 3 sept. 2010 à 13:53
A voir également:
- Batch caractère accentué
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractères spéciaux : comment taper des |—[©\½→}… - Guide
- Caractère spéciaux mac clavier - Guide
- Caractère accentué - Guide
6 réponses
nirG95
Messages postés
292
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
15 décembre 2010
32
27 août 2010 à 15:05
27 août 2010 à 15:05
Regarde du coté de sed ;)
nirG95
Messages postés
292
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
15 décembre 2010
32
27 août 2010 à 16:06
27 août 2010 à 16:06
Sinon tu peux faire un truc du genre :
Fichier1.txt : Je suis allé à la plage.
Fichier2.txt : Je suis alle a la plage.
Après à toi de le modifier à ta guise !
Cdlt.
for /f "delims=" %%a in ('type fichier1.txt') do call :commande "%%a" goto :eof :commande set ligne=%1 set ligne=%ligne:"=% set ligne=%ligne:é=e% set ligne=%ligne:è=e% set ligne=%ligne:à=a% @echo %ligne% >>fichier2.txt
Fichier1.txt : Je suis allé à la plage.
Fichier2.txt : Je suis alle a la plage.
Après à toi de le modifier à ta guise !
Cdlt.
nirG95
Messages postés
292
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
15 décembre 2010
32
Modifié par nirG95 le 27/08/2010 à 16:34
Modifié par nirG95 le 27/08/2010 à 16:34
Afin de garder les accent, as-tu essayé de remplacer les é par ' ?
Etant donné que le site n'accepte pas les caractères spéciaux, je te joint le fichier directement.
http://www.cijoint.fr/cjlink.php?file=cj201008/cijIXP2wlV.zip
Fichier1.txt : Je suis allé à la plage.
Fichier2.txt : Je matin je suis all, ... la plage.
@CMD
PS : Le site n'accepte pas les caractères afin de trouver les caractères qui remplaceront les accents, il faut lancer CMD et lancer edit (exemple : C:\> edit Fichier1.txt) ensuite mettre tes caractères accentués (exemple : é à è ù etc ...) l'enregistrer et ouvrir avec bloc-note et tu auras les caractères.
Cdlt.
for /f "delims=" %%a in ('type lol.txt') do call :commande "%%a" goto :eof :commande set ligne=%1 set ligne=%ligne:"=% set ligne=%ligne:é='% set ligne=%ligne:à=...% @echo %ligne% >>fichier2.txt
Etant donné que le site n'accepte pas les caractères spéciaux, je te joint le fichier directement.
http://www.cijoint.fr/cjlink.php?file=cj201008/cijIXP2wlV.zip
Fichier1.txt : Je suis allé à la plage.
Fichier2.txt : Je matin je suis all, ... la plage.
@CMD
C:\>type fichier2.txt Ce matin je suis allé à la plage.
PS : Le site n'accepte pas les caractères afin de trouver les caractères qui remplaceront les accents, il faut lancer CMD et lancer edit (exemple : C:\> edit Fichier1.txt) ensuite mettre tes caractères accentués (exemple : é à è ù etc ...) l'enregistrer et ouvrir avec bloc-note et tu auras les caractères.
Cdlt.
Merci de tes réponses aussi rapides, mais j'ai beaucoup de soucis.
Pour sed j'ai jeté un oeil mais a priori ça ne marche pas.
Ensuite pour ton premier script, il me change mes é par des ,
Tu peux me dire ce que signifie le set ligne=%1
et le set ligne=%ligne:"=% ?
En plus, il me supprime mes lignes vides.
Alors je manipule des fichiers ldif encodé en UTF-16LE et dès que j'utilise le script il m'enregistre le fichier de sortie en ANSI.
Mais bon c'est similaire à des fichiers textes et le côté le plus contraignant c'est que je dois tout faire en batch pour faire une tâche planifiée.
Je vais maintenant jeter un coup d'oeil à ta deuxième solution.
Merci de ta contribution :)
Pour sed j'ai jeté un oeil mais a priori ça ne marche pas.
Ensuite pour ton premier script, il me change mes é par des ,
Tu peux me dire ce que signifie le set ligne=%1
et le set ligne=%ligne:"=% ?
En plus, il me supprime mes lignes vides.
Alors je manipule des fichiers ldif encodé en UTF-16LE et dès que j'utilise le script il m'enregistre le fichier de sortie en ANSI.
Mais bon c'est similaire à des fichiers textes et le côté le plus contraignant c'est que je dois tout faire en batch pour faire une tâche planifiée.
Je vais maintenant jeter un coup d'oeil à ta deuxième solution.
Merci de ta contribution :)
nirG95
Messages postés
292
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
15 décembre 2010
32
27 août 2010 à 17:29
27 août 2010 à 17:29
Donc je t'ai mis deux scripts ! Le premier remplace les é par e, le deuxieme remplace les é par , (qui le é en dos)
La ligne suivante set ligne=%ligne:"=% supprime les cotes " " " ".
Mais mon premier script fonctionne.
Cdlt.
La ligne suivante set ligne=%ligne:"=% supprime les cotes " " " ".
Mais mon premier script fonctionne.
for /f "delims=" %%a in ('type fichier1.txt') do call :commande "%%a" goto :eof :commande set ligne=%1 set ligne=%ligne:"=% set ligne=%ligne:é=e% set ligne=%ligne:è=e% set ligne=%ligne:à=a% @echo %ligne% >>fichier2.txt
Cdlt.
MarcusDom
Messages postés
48
Date d'inscription
jeudi 17 juin 2010
Statut
Membre
Dernière intervention
8 juin 2011
30 août 2010 à 10:07
30 août 2010 à 10:07
( Excusez moi si je poste le même message plusieurs fois, mais ils n'apparaissent pas dans la discussion )
Ton premier script fonctionne mais uniquement si mon fichier est convertit en ANSI avant l'utilisation de ton script. Et il me supprime mes lignes vides du fichier, élement obligatoire pour faire la distinction entre 2 entrées.
Y a t-il une commande en batch qui converti un document en ANSI ?
Et aussi une commande pour ajouter une ligne vide après un certain nombre de ligne ? par exemple un modulo 10 pour qu'une ligne soit insérée après chaque entrée.
Merci
Ton premier script fonctionne mais uniquement si mon fichier est convertit en ANSI avant l'utilisation de ton script. Et il me supprime mes lignes vides du fichier, élement obligatoire pour faire la distinction entre 2 entrées.
Y a t-il une commande en batch qui converti un document en ANSI ?
Et aussi une commande pour ajouter une ligne vide après un certain nombre de ligne ? par exemple un modulo 10 pour qu'une ligne soit insérée après chaque entrée.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re
J'ai essayé ton code mais il ne fonctionne uniquement si mon fichier est converti en ANSI. Peut être qu'il existe un moyen de convertir un fichier UTF-16LE en ANSI en ligne de commande.
Et l'autre problème est qu'il supprime toutes les lignes vides.
Alors peut-on :
- Ajouter une ligne après chaque entrée ? la dernière ligne de chaque entrée se finit par givenName : nom de l'entrée
- Ajouter deux lignes vides à la fin du fichier, c'est une norme pour les fichiers ldif.
Le 2e code ne fonctionne pas, l'import dans le programme génère des erreurs, mais une solution me suffit :)
J'ai essayé ton code mais il ne fonctionne uniquement si mon fichier est converti en ANSI. Peut être qu'il existe un moyen de convertir un fichier UTF-16LE en ANSI en ligne de commande.
Et l'autre problème est qu'il supprime toutes les lignes vides.
Alors peut-on :
- Ajouter une ligne après chaque entrée ? la dernière ligne de chaque entrée se finit par givenName : nom de l'entrée
- Ajouter deux lignes vides à la fin du fichier, c'est une norme pour les fichiers ldif.
Le 2e code ne fonctionne pas, l'import dans le programme génère des erreurs, mais une solution me suffit :)
MarcusDom
Messages postés
48
Date d'inscription
jeudi 17 juin 2010
Statut
Membre
Dernière intervention
8 juin 2011
3 sept. 2010 à 11:56
3 sept. 2010 à 11:56
Du neuf, j'ai utilisé la commande sed pour l'uniformisation des caractères et ca marche plutôt bien :)
Je la recommande, il y a quelques subtilités par rapport à la syntaxe Linux, voilà comment je l'ai utilisé :
sed s/é/e/ fichier.ldf > temp.ldf
sed s/è/e/ temp.ldf > temp2.ldf
sed s/ô/o/ temp2.ldf > temp3.ldf
sed s/ê/e/ temp3.ldf > temp4.ldf
sed s/î/i/ temp4.ldf > temp5.ldf
sed s/û/u/ temp5.ldf > fichier.ldf
del temp.ldf
del temp2.ldf
del temp3.ldf
del temp4.ldf
del temp5.ldf
Je sais pas si c'est optimal, mais au moins ca marche, et il faut répéter certaines lignes pour les mots qui possèderaient plusieurs fois le même caractère.
Merci et bonne continuation
Je la recommande, il y a quelques subtilités par rapport à la syntaxe Linux, voilà comment je l'ai utilisé :
sed s/é/e/ fichier.ldf > temp.ldf
sed s/è/e/ temp.ldf > temp2.ldf
sed s/ô/o/ temp2.ldf > temp3.ldf
sed s/ê/e/ temp3.ldf > temp4.ldf
sed s/î/i/ temp4.ldf > temp5.ldf
sed s/û/u/ temp5.ldf > fichier.ldf
del temp.ldf
del temp2.ldf
del temp3.ldf
del temp4.ldf
del temp5.ldf
Je sais pas si c'est optimal, mais au moins ca marche, et il faut répéter certaines lignes pour les mots qui possèderaient plusieurs fois le même caractère.
Merci et bonne continuation
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
3 sept. 2010 à 12:28
3 sept. 2010 à 12:28
tu peux mettre les commandes sed dans un fichier et appeller sed -f fichier.txt
ajouter un g pour qu'il change tous les caractères sur la ligne
ajouter un g pour qu'il change tous les caractères sur la ligne
s/é/e/g s/è/e/g etc
MarcusDom
Messages postés
48
Date d'inscription
jeudi 17 juin 2010
Statut
Membre
Dernière intervention
8 juin 2011
3 sept. 2010 à 13:53
3 sept. 2010 à 13:53
Merci dubcek, j'avais déjà mis les commandes dans un fichier batch, mais je ne connaissais pas l'option /g
Je vais améliorer ça
Je vais améliorer ça