Commande for /f : récupération d'une donnée dans un fichier
Résolu
vayleme
Messages postés
86
Date d'inscription
Statut
Membre
Dernière intervention
-
vayleme Messages postés 86 Date d'inscription Statut Membre Dernière intervention -
vayleme Messages postés 86 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je n'arrive pas à récupérer une donnée contenue dans une ligne d'un fichier texte.
Voici à quoi ressemble le fichier.
donnee : 1
) donnee : 2
- donnee : 3
$ donnee : 4
la valeur en fin de ligne est indéterminée, j'arrive à récupérer la donnée de la dernière ligne et de l'avant-dernière avec ces commandes :
Mais je ne trouve pas les commandes pour les deux premières lignes.
J'espère que vous pourrez m'aider.
Je n'arrive pas à récupérer une donnée contenue dans une ligne d'un fichier texte.
Voici à quoi ressemble le fichier.
donnee : 1
) donnee : 2
- donnee : 3
$ donnee : 4
la valeur en fin de ligne est indéterminée, j'arrive à récupérer la donnée de la dernière ligne et de l'avant-dernière avec ces commandes :
for /f "tokens=2 delims=:" %%a in (fichier.txt) do set a=%%a
for /f "tokens=2 delims=: eol=$" %%b in (fichier.txt) do set b=%%b
Mais je ne trouve pas les commandes pour les deux premières lignes.
J'espère que vous pourrez m'aider.
A voir également:
- For /f "tokens
- For tokens delims - Meilleures réponses
- For /f "tokens= - Meilleures réponses
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
- Chkdsk c /f /r - Guide
2 réponses
Bonjour,
Il y a un espace entre le caractère spécial et la donnée, donc ça devrait être simple.
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Il y a un espace entre le caractère spécial et la donnée, donc ça devrait être simple.
for /f "eol=: tokens=2 delims= " %%a in (fichier.txt) do set var=%%a
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
@echo off
cls
::récupération dernière ligne
for /f "tokens=2 delims=:" %%a in (fichier.txt) do set a=%%a
::copie du fichier sans la dernière ligne
for /f "tokens=* delims=: eol=$" %%e in (fichier.txt) do echo %%e >> %cd%\temp.txt
::pause création du fichier
timeout /nobreak /t 003 >nul
::récupération de l'avant-dernière ligne
for /f "tokens=2 delims=:" %%b in (%cd%\temp.txt) do set b=%%b
::copie du fichier temp sans la dernière ligne
for /f "tokens=* delims=: eol=-" %%f in (%cd%\temp.txt) do echo %%f >> %cd%\tempp.txt
::pause création du fichier
timeout /nobreak /t 003 >nul
::récupération de la deuxième ligne
for /f "tokens=2 delims=:" %%c in (%cd%\tempp.txt) do set c=%%c
::récupération de la première ligne
for /f "tokens=2 delims=: eol=)" %%d in (%cd%\tempp.txt) do set d=%%d
::pause avant suppresion des fichiers
timeout /nobreak /t 002 >nul
::suppression des fichiers
erase %cd%\temp.txt %cd%\tempp.txt
echo appuie sur une touche pour voir les valeurs !
pause >nul
echo %a%
echo %b%
echo %c%
echo %d%
echo.
echo appuie sur une touche pour quitter.
pause >nul
exit
Cordialement,
Vayleme
tu as saisi, a un poil près, ta commande récupère la 3ème ligne, (et pas seulement le nombre).
Je vais essayer de résumer ce que je souhaite faire.
voici le contenu du fichier :
donnee : 5
) donnee : 18
- donnee : 72
$ donnee : 0
l'objectif est de récupérer les valeurs 5, 18, 72 et 0 dans des variables. tel que
a=5
b=18
c=72
d=0
pour récupérer le 0 (dernière ligne) dans la variable d, voici la commande :
pour récupérer le 72 dans la variable c, voici la commande :
L'objectif est de trouver la commande pour récupérer le "18" et la commande pour récupérer le "5".
Ma solution (affichée plus haut) consiste à récupérer la dernière ligne, puis dupliquer le fichier en supprimant la dernière ligne, puis récupérer la dernière ligne du duplicata ect... pour les 4 lignes.
Je laisse le poste ouvert pour savoir si il existe une solution pour récupérer ces valeurs sans modifier le fichier.
Je vais essayer de résumer ce que je souhaite faire.
voici le contenu du fichier :
donnee : 5
) donnee : 18
- donnee : 72
$ donnee : 0
l'objectif est de récupérer les valeurs 5, 18, 72 et 0 dans des variables. tel que
a=5
b=18
c=72
d=0
pour récupérer le 0 (dernière ligne) dans la variable d, voici la commande :
for /f "tokens=2 delims=:" %%d in (fichier.txt) do set d=%%d
pour récupérer le 72 dans la variable c, voici la commande :
for /f "tokens=2 delims=: eol=$" %%c in (fichier.txt) do set c=%%c
L'objectif est de trouver la commande pour récupérer le "18" et la commande pour récupérer le "5".
Ma solution (affichée plus haut) consiste à récupérer la dernière ligne, puis dupliquer le fichier en supprimant la dernière ligne, puis récupérer la dernière ligne du duplicata ect... pour les 4 lignes.
Je laisse le poste ouvert pour savoir si il existe une solution pour récupérer ces valeurs sans modifier le fichier.
yep ca fonctionne, juste deux petites erreurs à corriger :
Merci d'avoir proposé cette solution, j'aurais jamais pensé à imbriquer plusieurs for dans une même commande, tu m'as encore appris quelque chose ^^.
Merci de ton aide !
Une solution efficace ayant été trouvée, je clos ce sujet.
for /f "eol=$ tokens=*" %%a in (fichier.txt) do (for /f "eol=- tokens=2 delims=:" %%g in ('echo %%a') do (set var=%%g)
Merci d'avoir proposé cette solution, j'aurais jamais pensé à imbriquer plusieurs for dans une même commande, tu m'as encore appris quelque chose ^^.
Merci de ton aide !
Une solution efficace ayant été trouvée, je clos ce sujet.
décidément tu m'aides beaucoup ces derniers jours barnabe ^^ encore merci de ta réponse mais malheureusement ta commande récupère la donnée de la dernière ligne.
voici le retour de la commande.
renvoie
1
2
3
4
et si je fais
seul le "4" se trouve dans la variable. Je ne souhaite que le "2" et une autre commande pour conserver que le "1".