Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
un FOR en deroute
Auteur Message
Répondre en citant
Message un FOR en deroute 
bonjour,
ci dessous un programme devant permettre la recherche dans un fichier annuaire qui comporte pour chaque ligne lenom, leprenom et ses numéros de téléphone sous le format 99 99 99 99 99
le demandeur saisie la variable nom ou numéro (éventuellement tronque) le programme recherche par find la variable saisie
simple non
et bien ça ne marche pas pour les numéros je soupçonne les espaces mais
Je sèche
expliquer moi mes erreurs
merci Sad

le@echo off
echo ============================================================
echo Recherche sur annuaire Mira
echo ============================================================
:deb
set annuaire="D:\Annuaire-Mira.txt"
If EXIST %annuaire% goto recherche1
:absent
echo Anomalie - fichier annuaire-Mira absent dans
echo %annuaire%
goto fin
:recherche1
echo Le fichier Annuaire-Mira est trouve
:recherche2
echo Pour le telephone saisir sous la forme 99 99 99 99 99
set /p nom=Pour le nom pas de casse :
echo je cherche : %nom%
:recherche3
set /p OK=Je continue Y ou N :
if %OK%==Y goto recherche4
if %OK%==y goto recherche4
if %OK%==N goto recherche2
if %OK%==n goto recherche2
goto suite1
:recherche4
for /f "delims=" %%i in ('type %annuaire% ^|FIND /I "%nom%"') do echo ---- %%i
if %ERRORLEVEL%==1 goto rien
goto suite
:rien
echo ----Rien Trouvé
:suite
set /p suite=Nouvelle recherche: Y ou N
if %suite%==Y goto recherche2
if %suite%==y goto recherche2
if %suite%==N goto Fin
if %suite%==n goto Fin
goto suite
:Fin
echo ============================================================
echo C'est fini---Tapez sur une touche
pause



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message un FOR en deroute 
Bonsoir,

comme je fais une boucle, ne serait ce pas un problème d' initialisation d'une donnée? mais laquelle?

je cherche



Répondre en citant
Message un FOR en deroute 
bonjour
merci d utiliser la balise code pour entourer ton code

peux tu avoir un exemple concret du contenu de ton txt pour savoir l arrangement de celui ci.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message un FOR en deroute 
Bonjour,
la structure du fichier est nom,prénom,fixe domicile,portable domicile,fixe pro,portable pro,
exemple de fichier
ABBAYE DE SEPT-FONS,,,,04 70 48 14 70,06 70 48 14 85,
DUCHAN,jean,,,,04 05 72 14 27,,
DUPONT,Antoine,01 23 45 67 89,,,06 07 78 99,
NOM,Prénom,01 03 03 04 05,06 03 03 04 05,01 03 03 04 05,07 03 03 04 05,
Merci



Répondre en citant
Message un FOR en deroute 
bonjour,
j'ai ajouter un for pour afficher le nb de résultats
et modifier le for d'affichage maintenant cela marche
il me reste a structurer l'affichage de mavar par redefinition
j'accepte toutes solutions
merci Shocked


@echo off
title Annuaire par moi-meme
color 1F
echo ============================================================
echo Recherche sur annuaire Mira
echo ============================================================
:deb
set annuaire="Z:Annuaire-Mira.txt"
If EXIST %annuaire% goto recherche1
:absent
echo Anomalie - fichier annuaire-Mira absent dans
echo %annuaire%
goto fin
:recherche1
echo Le fichier Annuaire-Mira est trouve
:recherche2
echo Pour le telephone saisir sous la forme 99 99 99 99 99
set /p nom=Pour le nom pas de casse :
echo je cherche : %nom%
:recherche3
set /p OK=Je continue Y ou N :
if %OK%==Y goto recherche4
if %OK%==y goto recherche4
if %OK%==N goto recherche2
if %OK%==n goto recherche2
goto suite1
:recherche4
set mavar=0
set cpt=0
for /F %%A in ('type %annuaire% ^| Find /I "%nom%"') do set /a cpt=cpt+1
echo il ya %cpt% réponse(s)
for /f "delims=" %%i in ('type %annuaire% ^|FIND /I "%nom%"') do (
set mavar=%%i
echo ----%%i
)
:suite
set /p suite=Nouvelle recherche: Y ou N
if %suite%==Y goto deb
if %suite%==y goto recherche2
if %suite%==N goto Fin
if %suite%==n goto Fin
goto suite
:Fin
echo ============================================================
echo C'est fini---Tapez sur une touche
pause



Répondre en citant
Message un FOR en deroute 
Bonjour,

comme chaque information est délimité par une virgule, utilise une boucle for de type for /f "tokens=* delims=," %%i in ('type "ton fichier" ^| find /I "chaine"') do echo %%i,%%j,%%k,%%l,%%m,%%n,%%o,%%p

sa te permet de récupérer par exemple le numéro de portable dans la variable %%n



Répondre en citant
Message un FOR en deroute 
bonjour
j'ai modifier la ligne comme cidessous
for /f "tokens=* delims=," %%B in ('type %annuaire% ^| find /I "%nom%"') do echo %%i,%%j,%%k,%%l,%%m,%%n
le resultat est
%i,%j,%k,%l,%m,%n Sad

ou est la bavure
d'&v&nce merci



Répondre en citant
Message un FOR en deroute 
Bonjour,

J'ai modifié le For :

for /f "tokens=1,2,3,4,5,6 delims=," %%i in ('type %annuaire% ^| find /I "%nom%"') do echo ---%%i,%%j-TD:%%k-PD:%%l-TP:%%m-PP:%%n
ca marche quoique pas très lisible
y a un ligne à blanc entre chaque réponse : pourquoi ?
je retourne a mes études
j'accepte toutes les remarques
merci



Répondre en citant
Message un FOR en deroute 
-> tokens=1-6

sinon pour tes ligne "a blanc" il faudrait analyser le contenu de ton fichier annuaire pour trouver le problème.



Répondre en citant
Message un FOR en deroute 
Hello ^^

Petite astuce, c'est du bidouillage, mais ça fonctionne Okay

Code:

@echo off
setlocal enabledelayedexpansion
title Annuaire par moi-meme
color 1F
echo ============================================================
echo Recherche sur annuaire Mira
echo ============================================================
:deb
set annuaire="Z:Annuaire-Mira.txt"
If EXIST %annuaire% goto recherche1
:absent
echo Anomalie - fichier annuaire-Mira absent dans
echo %annuaire%
goto fin
:recherche1
echo Le fichier Annuaire-Mira est trouve
:recherche2
echo Pour le telephone saisir sous la forme 99 99 99 99 99
set /p nom=Pour le nom pas de casse :
echo je cherche : %nom%
:recherche3
set /p OK=Je continue Y ou N :
if /i %OK%==Y goto recherche4
if /i %OK%==N goto recherche2
goto suite1
:recherche4
set mavar=0
set cpt=0
for /F %%A in ('type %annuaire% ^| Find /I "%nom%"') do set /a cpt=cpt+1
echo il ya %cpt% réponse(s)
for /f "tokens=1-6 delims=," %%A in ('type %annuaire% ^|FIND /I "%nom%"') do (
    set "A=%%AA" &set "B=%%BB" &set "C=%%CC" &set "D=%%DD" &set "E=%%EE" &set "F=%%FF"
    if !A! NEQ A echo _Nom: %%A
    if !B! NEQ B echo _Prenom: %%B
    if !C! NEQ C echo _Fixe domicile: %%C
    if !D! NEQ D echo _Portable domicile: %%D
    if !E! NEQ E echo _Fixe pro: %%E
    if !F! NEQ F echo _Portable pro: %%F
    )

:suite
set /p suite=Nouvelle recherche: Y ou N
if %suite%==Y goto deb
if %suite%==y goto recherche2
if %suite%==N goto Fin
if %suite%==n goto Fin
goto suite
:Fin
echo ============================================================
echo C'est fini---Tapez sur une touche
pause





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message un FOR en deroute 
Bonjour,
Merci pour ton code mais ma préoccupation actuelle vient que lorsqu'une une valeur est absente il y'a décalage
cela veut il dire qu'il ne donne que les zones renseignées?
ainsi pour dupont,,,,,06 55 55 66 66,
délivre 06 55 55 66 66 en prénom variable %%j
solution????



Répondre en citant
Message un FOR en deroute 
Bonjour
Je ne comprends pas &set et if !A! NEQ A et pourquoi ce test ?
Merci Embarassed



Répondre en citant
Message un FOR en deroute 
set "A=%%AA" &set "B=%%BB" &set "C=%%CC" &set "D=%%DD" &set "E=%%EE" &set "F=%%FF"

peut être traduit par

set "A=%%AA"
set "B=%%BB"
set "C=%%CC"
set "D=%%DD"
set "E=%%EE"
set "F=%%FF"



si tu faisait un minimum de recherche ont pourrait diviser par deux le nombre de messages dans ce topic ...



Répondre en citant
Message un FOR en deroute 
Bonsoir,
"si tu faisait un minimum de recherche ont pourrait diviser par deux le nombre de messages dans ce topic ..."
réponse bien décevante, il ne faut pas proposer ses services (sic "si tu veux des explications hésite pas")
et critiquer ensuite.
Par contre il me saurait bénéfique de me communiquer le tutoriel donnant avec "le minimum de recherche" la signification de & dans &set car set je connais mais &set je ne connais pas encore il en est de même de ! dans !A!.
Merci



Répondre en citant
Message un FOR en deroute 
Bonsoir !

Tu as testé mon code ??
Il répond justement à ta question sur le décalage ...

Le souci vient du fait que si il n'y a rien entre 2 virgules, la variable provoquée par FOR est nulle et donc ça te décale tout !!
Le problème est aussi qu'il n'y a pas de commande directe pour verifier si une variable d'itération de FOR est nulle ...
Ma bidouille consiste à ajouter un caractère à la variable, comme ça elle ne peut pas être nulle
Code:

set "A=%%AA"

Ensuite on vérifie si chaque variable est "nulle+le caractère ajouté":
Code:

if !A! NEQ A echo _Nom: %%A

Ici, j'entoure mon A de !! à la place de %% parce qu'il s'agit d'une variable retardée, mais ça c'est un détail !!




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Message un FOR en deroute 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch