Commande for /f : récupération d'une donnée dans un fichier
Résolu
vayleme
Messages postés
91
Statut
Membre
-
vayleme Messages postés 91 Statut Membre -
vayleme Messages postés 91 Statut Membre -
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.
--
Cordialement,
Vayleme
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.
--
Cordialement,
Vayleme
2 réponses
-
Bonjour,
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.”-
Bonjour,
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.for /f "eol=: tokens=2 delims= " %%a in (fichier.txt) do echo %%a
renvoie
1
2
3
4
et si je faisfor /f "eol=: tokens=2 delims= " %%a in (fichier.txt) do set var=%%a
seul le "4" se trouve dans la variable. Je ne souhaite que le "2" et une autre commande pour conserver que le "1".- le fichier txt contient les 4 lignes que j'ai écrites plus haut, le but est de récupérer dans 4 variables différentes les valeurs de la fin de chaque ligne (1, 2, 3, 4) sachant que ces valeurs ne sont pas statiques. Mais finalement, je vien de trouver à l'instant,mais c'est beaucoup du bricolage, je met ma solution dans le poste et je laisse le sujet ouvert une journée au cas ou quelqu'un à une meilleure idée.
-
-
@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-
Je ne suis toujours pas sûr d'avoir bien saisi, est-ce que ça t'aide :
for /f "eol=$ tokens=1 delims=-)" %%a in (fichier.txt) do echo %%a
Ca n'affiche pas la dernière ligne.- 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 :
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 :
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.
-