DOS chaine de caractère en position fixe
Fermé
Hypothez7
-
1 avril 2021 à 10:18
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 17 avril 2021 à 14:34
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 17 avril 2021 à 14:34
A voir également:
- DOS chaine de caractère en position fixe
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Ma position - Guide
7 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
1 avril 2021 à 10:33
1 avril 2021 à 10:33
Bonjour,
Tu auras besoin d'une boucle FOR /F pour parcourir chaque ligne du fichier texte, ensuite il faudra découper la ligne puis tester les 2 caractères avec une condition IF.
Donc ça donnerait un truc du genre :
Tu auras besoin d'une boucle FOR /F pour parcourir chaque ligne du fichier texte, ensuite il faudra découper la ligne puis tester les 2 caractères avec une condition IF.
Donc ça donnerait un truc du genre :
@echo off setlocal enableextensions enabledelayedexpansion for /f "usebackq delims=" %%A in ("toto.txt") do ( set "ligne=%%A" set "cible=!ligne:~8,2!" if "!cible!"=="DC" (echo !ligne! >>tata.txt) if "!cible!"=="DI" (echo !ligne! >>tutu.txt) ) pause exit
Bonjour,
Parfait !!!!!
un petit détail près, dans le résultat des fichiers tata et tutu, j'ai un espace à chaque fin de ligne
:(
pourquoi, et comment peut-on faire pour qu'il n'y soit pas ?!
Encore merci
Parfait !!!!!
un petit détail près, dans le résultat des fichiers tata et tutu, j'ai un espace à chaque fin de ligne
:(
pourquoi, et comment peut-on faire pour qu'il n'y soit pas ?!
Encore merci
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
Modifié le 2 avril 2021 à 09:09
Modifié le 2 avril 2021 à 09:09
Ah oui effectivement j'ai laissé trainer un espace entre le ECHO et la redirection vers le fichier texte.
Voilà la correction :
Voilà la correction :
if "!cible!"=="DC" (echo !ligne!>>tata.txt) if "!cible!"=="DI" (echo !ligne!>>tutu.txt)
Bonjour,
C'est ok pour le caractère de fin > merci
Mais je n'ai pu le faire qu'un fois, depuis quand je lance mon batch, rien ne se passe
résultat :
C:\Windows\system32>setlocal enableextensions enabledelayedexpansion
C:\Windows\system32>for /F "usebackq delims=" %A in (toto.txt) do (
set "ligne=%A"
set "cible=!ligne:~8,2!"
if "!cible!" == "M6" (echo !ligne! 1>>tata.txt )
if "!cible!" == "DI" (echo !ligne! 1>>tutu.txt )
)
Le système ne peut trouver le fichier toto.txt.
C:\Windows\system32>pause
Appuyez sur une touche pour continuer...
le toto se trouve au même endroit que le batch
toto.txt
et avec ça comme commande, c'est pareil
c:
cd c:\script
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%A in (toto.txt) do (
set "ligne=%%A"
set "cible=!ligne:~8,2!"
if "!cible!"=="M6" (echo !ligne!>>tata.txt)
if "!cible!"=="DI" (echo !ligne!>>tutu.txt)
)
pause
Merci
C'est ok pour le caractère de fin > merci
Mais je n'ai pu le faire qu'un fois, depuis quand je lance mon batch, rien ne se passe
résultat :
C:\Windows\system32>setlocal enableextensions enabledelayedexpansion
C:\Windows\system32>for /F "usebackq delims=" %A in (toto.txt) do (
set "ligne=%A"
set "cible=!ligne:~8,2!"
if "!cible!" == "M6" (echo !ligne! 1>>tata.txt )
if "!cible!" == "DI" (echo !ligne! 1>>tutu.txt )
)
Le système ne peut trouver le fichier toto.txt.
C:\Windows\system32>pause
Appuyez sur une touche pour continuer...
le toto se trouve au même endroit que le batch
toto.txt
et avec ça comme commande, c'est pareil
c:
cd c:\script
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%A in (toto.txt) do (
set "ligne=%%A"
set "cible=!ligne:~8,2!"
if "!cible!"=="M6" (echo !ligne!>>tata.txt)
if "!cible!"=="DI" (echo !ligne!>>tutu.txt)
)
pause
Merci
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
Modifié le 6 avril 2021 à 17:11
Modifié le 6 avril 2021 à 17:11
Bonjour,
Quand tu postes du code merci d'utiliser les balises de code, sous peine de te faire flageller par un modérateur ;)
On va rajouter une ligne pour tester l'existence de toto.txt :
Quand tu postes du code merci d'utiliser les balises de code, sous peine de te faire flageller par un modérateur ;)
On va rajouter une ligne pour tester l'existence de toto.txt :
@echo off setlocal enableextensions enabledelayedexpansion if not exist "toto.txt" (dir /b *.txt & pause) for /f "usebackq delims=" %%A in ("toto.txt") do ( set "ligne=%%A" set "cible=!ligne:~8,2!" if "!cible!"=="M6" (echo !ligne!>>tata.txt) if "!cible!"=="DI" (echo !ligne!>>tutu.txt) ) pause exit
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Cela fonctionne très bien avec la plupart des fichiers, sauf que je sais pourquoi le système ne voit pas certains fichiers,
en les ouvrant avec Notepad++ ceux-ci sont codé en AINSI avec des caractères "NUL", quand je le convertis en UTF-8 et que je lance ma commande, ça fonctionne.
Ma question est : quel ligne de commande DOS permet de convertir un fichier en UTF-8 ?
D'avance merci encore
Cela fonctionne très bien avec la plupart des fichiers, sauf que je sais pourquoi le système ne voit pas certains fichiers,
en les ouvrant avec Notepad++ ceux-ci sont codé en AINSI avec des caractères "NUL", quand je le convertis en UTF-8 et que je lance ma commande, ça fonctionne.
Ma question est : quel ligne de commande DOS permet de convertir un fichier en UTF-8 ?
D'avance merci encore
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
15 avril 2021 à 13:52
15 avril 2021 à 13:52
Pour convertir un fichier ASCII en Unicode :
CMD.EXE /U /C TYPE ascii_file.txt >> unicode.txt
Hypothez*
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
15 avril 2021 à 14:43
15 avril 2021 à 14:43
Merci pour le retour
le fichier est convertit en UCS-2 Little Endian et j'ai toujours les caractères "NUL"
:(
le fichier est convertit en UCS-2 Little Endian et j'ai toujours les caractères "NUL"
:(
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
>
Hypothez*
15 avril 2021 à 16:39
15 avril 2021 à 16:39
Il y a quelque chose de bizarre chez toi, normalement si tu crées un nouveau fichier texte (tata.txt ou tutu.txt) il est créé au format ANSI et la commande que j'ai donné permet la conversion en Unicode.
Les encodages ce n'est pas ma tasse de thé, je crains de ne pouvoir t'aider davantage.
Les encodages ce n'est pas ma tasse de thé, je crains de ne pouvoir t'aider davantage.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
17 avril 2021 à 14:34
17 avril 2021 à 14:34
Après avoir approfondi la chose, la commande que j'ai donné convertit bien de ASCII vers Unicode (UCS-2 Little Endian).
Apparemment il n'est pas possible de convertir vers UTF-8
Apparemment il n'est pas possible de convertir vers UTF-8
Extraplus
Messages postés
5
Date d'inscription
jeudi 15 avril 2021
Statut
Membre
Dernière intervention
21 avril 2021
15 avril 2021 à 14:49
15 avril 2021 à 14:49
Tu peux tester la formule
=STXT()
=STXT()
La formule "=STXT()" en DOS ?
connais pas
connais pas
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
16 avril 2021 à 19:24
16 avril 2021 à 19:24
Moi non plus, je dirais plutôt que c'est une formule Excel.