[MS DOS] récupérer résultat commande find [Fermé]

Messages postés
8
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
12 octobre 2012
- - Dernière réponse :  billabong_vb - 30 juin 2009 à 17:59
Bonjour à tous,

je débute et voila mon problème dans un batch:
comment récupérer le résultat de la commande FIND sous DOS ?

explications:
je cherche la chaine de caractère ("toto") dans un fichier texte (monfichier.txt).
j'utilise donc : FIND /c "toto" {c:\monfichier.txt}

le /c me permet de savoir le nombre de lignes où je trouve "toto" dans le fichier.
mais comment récupérer ce nombre dans une variable ?

merci d'avance
Afficher la suite 

6 réponses

Meilleure réponse
15
Merci
Salut,

Utilise la commande FOR /F comme ceci:

for /F "usebackq tokens=3 delims= " %i IN (`find /c monfichier`) DO set myvar=%i

ici ce qui est entre ` ` est une commande DOS. C'est le résultat de cette commande qui sera prise par le FOR.

Explication de delims= et tokens=3 :
Mon find d'exmple me renvoyait: ---------- MF2MCAIR.S19: 1
C'est le "1" que je veux! delims=<espace> va couper la chaine en 3 parties, c'est a dire à chaque espace.
j'ai donc 3 chaines "----------" , "MF2MCAIR.S19:" et "1"
Token=3 va prendre la 3eme chaine et la mettre dans la variable i.
A la fin je fais juste un "set myvar=%i" pour reccupérer la valeur et la mettre dans la variable "i"

Attention si tu fais cette commande dans un batch il faut doubler les % et écrire "set mayvar=%%i". Enfin il me semble...

J'espère que c'est pas trop tard pour t'aider!

Voilà.

Dire « Merci » 15

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62805 internautes nous ont dit merci ce mois-ci

5
Merci
Plus simple sur le même principe :
for /f %i in ('type mon_fichier.txt ^|find /c "toto"') do set myvar=%i

--> Comme dit précédemmment il faut penser à doubler les % pour un batch.
4
Merci
Merci sljcfv pour la commande. Elle m'a permis d'ameliorer mon script basé sur le prog de telnet automatique:
tst10.exe
Le but: dés que mon serveur NAS est allumé, il s'annonce par mail avec l'adresse DHCP qu'il a recupéré.
(c'etait la difficulté).
Bien sur un raccourci vers le script est placé dans le rep "Demarrage"
Ca marche tres bien!!


Contenu du script: "envoi_mel.bat" :

@echo off
rem ___________________________________________________________
rem Envoi d'un mail contenant l'IP du serveur avec txt10.exe
rem ___________________________________________________________
cls

echo.
FOR /f "tokens=2 delims=:" %%i in ('ipconfig ^|find "Adresse"') DO set IP=%%i
rem `commande DOS`. C'est le résultat de cette commande qui sera prise par le FOR.
rem delimiteur = :,tokens=2 prendre 2em champ
rem il faut penser à doubler les % pour un batch et eviter "_" dans les noms de variables!

rem ___________________________________________________________

echo L'adresse IP est: %IP%
echo.
echo Envoi d'un mail, Veuillez patienter svp...

echo smtp.orange.fr 25> cmd_smtp.txt
echo WAIT "ABO">> cmd_smtp.txt
echo SEND "HELO ESMTP\m">> cmd_smtp.txt
echo WAIT "250">> cmd_smtp.txt
echo SEND "MAIL FROM: <Serveur.NAS@orange.fr>\m">> cmd_smtp.txt
echo WAIT "250">> cmd_smtp.txt
echo SEND "RCPT TO: <chez.moi@orange.fr>\m">> cmd_smtp.txt
echo WAIT "250">> cmd_smtp.txt
echo SEND "DATA\m">> cmd_smtp.txt
echo Wait " ">> cmd_smtp.txt
echo SEND "Subject: Serveur de sauvegarde disponible\mLE serveur NAS est en ligne a l'adresse: %IP% \m.\m">> cmd_smtp.txt
echo SEND "RSET\m">> cmd_smtp.txt
echo WAIT "Ok">> cmd_smtp.txt
echo SEND "QUIT\m">> cmd_smtp.txt
echo WAIT "Ok">> cmd_smtp.txt
echo SEND "QUIT\m">> cmd_smtp.txt

rem ___________________________________________________________
tst10 /r:cmd_smtp.txt /o:output.log
rem ___________________________________________________________

Title Invite
del cmd_smtp.txt
cls
2
Merci
Bonjour,

Je ne sais si cela peux t'aider mais si la commande
FIND /c "toto" {c:\monfichier.txt}
Met à jour la variable system %ERRORLEVEL%

Si elle vaut :
1 c’est qu’il n’a pas trouvé
0 c’est qu’il a trouvé au moins une occurrence toto


Stéphane
0
Merci
bonjour à tous,

j'ai un petit souci avec la commande FIND également.
en fait, je sais m'en servir quand j'ouvre une commande MS DOS sous windows, mais lorsque je boote sur une disquette de boot (faites par windows me), il ne me reconnais pas la commande find
est ce quelqu'un a une explication à cela

Merci d'avance
Bonsoir,

Tu ne dois pas avoir la commande Find sur ta disquette de boot
Essaye de rajouter la commande Find sur ta disquette, il se trouve C:\Windows\System32\Find.exe

Stéphane
> timidei -
merci
effectivement mon probleme venait de cela
je viens de voir que l'exe de find n'est pas dans les disquette de boot win 98 et Me
0
Merci
<h1>Salam a tous les members ! et Voilà jai trouver Un Tutorial pour envoyer Des emails a prtie de MS-dos

Par La commande TELNET
</h1>

http://www.siteduzero.com/tutoriel-3-35599-l-exploit-telnet.html

Bonne Chance ;)