Batch lecture d'un fichier txt à l'envers
Résolu
Gatio77
-
bricomachin Messages postés 244 Date d'inscription Statut Membre Dernière intervention -
bricomachin Messages postés 244 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'appelle à l'aide car je suis bloqué avec mon script batch.
Je souhaite afficher le 3eme mot de la 2eme ligne d'un fichier texte. Le voici :
Morarnligmirlas Mirlashall Liglomnirluscal
Hellles Norbyr Luggemborsel Morgum
Legurn Urnmer
Lashobornor Lomhell Ernlegbyrlogurn
Hebor Thigymthinorha
J'aimerais que mon script m'affiche le mot : Luggemborsel.
Pour cela voici mon script :
Le problème est que mon script m'affiche : Thigymthinorha !! Le dernier mot de la dernière ligne.
Si je change skip=2 ou skip=3 mon script m'affiche toujours le dernier mot.
Quelqu'un a une idée ?
Merci d'avance :)
J'appelle à l'aide car je suis bloqué avec mon script batch.
Je souhaite afficher le 3eme mot de la 2eme ligne d'un fichier texte. Le voici :
Morarnligmirlas Mirlashall Liglomnirluscal
Hellles Norbyr Luggemborsel Morgum
Legurn Urnmer
Lashobornor Lomhell Ernlegbyrlogurn
Hebor Thigymthinorha
J'aimerais que mon script m'affiche le mot : Luggemborsel.
Pour cela voici mon script :
@echo off
set fichier=test.txt
for /f "skip=1 tokens=2 delims= " %%a in ('type "%fichier%"') do (
set ta=%%a
)
echo %ta%
pause
@exit
Le problème est que mon script m'affiche : Thigymthinorha !! Le dernier mot de la dernière ligne.
Si je change skip=2 ou skip=3 mon script m'affiche toujours le dernier mot.
Quelqu'un a une idée ?
Merci d'avance :)
A voir également:
- Txt. fr texte à l'envers
- Ecran a l'envers - Guide
- Coco fr - Accueil - Réseaux sociaux
- Hotmail.com ou .fr - Forum Réseaux sociaux
- / À l'envers clavier ✓ - Forum Matériel & Système
- 3 à l'envers ✓ - Forum Windows
3 réponses
Salut,
Il y a trois problèmes dans ton code.
Le premier est qu'à voir, la commande
Ensuite, tu utilises
Finalement, si tu
Le code final :
J'utilise le
Bien à toi,
Bricomachin
Il y a trois problèmes dans ton code.
Le premier est qu'à voir, la commande
type %fichier%ne transmet que la dernière ligne de ton fichier. Réparation : utiliser
%%a in (%fichier%) do (cela permettra d'utiliser réellement toutes les lignes de ton fichier.
Ensuite, tu utilises
tokens=2alors que ton mot est en 3e position (
Hellles=1 Norbyr=2 Luggemborsel=3 Morgum=4). Réparation utiliser
for /f "skip=1 tokens=3 delims= ".
Finalement, si tu
set ta=%%aà chaque tour de boucle, ce ne sera que la dernière occurrence qui sera utilisée et donc
Ernlegbyrlogurn. Réparation : initialiser la variable
taavec la valeur
xet ne permettre son affectation à
%%aque si elle vaut
xavant.
Le code final :
@echo off setlocal enableDelayedExpansion set fichier=test.txt set ta=x for /f "skip=1 tokens=3 delims= " %%a in (%fichier%) do ( if !ta!==x set ta=%%a ) echo !ta! pause endlocal exit
J'utilise le
setlocal enableDelayedExpansionavec les
!à la place des
%pour pouvoir tester la variable en temps réél, car autrement je la testes après la boucle for et elle a changé entre-temps.
Bien à toi,
Bricomachin