Boucle For
Fermé
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
-
Modifié le 21 avril 2017 à 23:05
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 - 23 avril 2017 à 17:25
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 - 23 avril 2017 à 17:25
A voir également:
- Boucle For
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Download instagram for pc - Télécharger - Divers Communication
- Saveaspdf.exe for office 2007 - Télécharger - Bureautique
- Whatsapp for pc - Télécharger - Messagerie
4 réponses
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 23 avril 2017 à 18:05
Modifié le 23 avril 2017 à 18:05
Essaie voir ça :
:_RchOnd
set OndNum=0
set compt_OND_SERIAL=0
for /f "delims=" %%i in ('type "!ONDULEUR_SERIAL!"') do set /a compt_OND_SERIAL+=1
cls
call :Plan_addressage
::Donne l'adresse d'un numéro d'onduleur
echo %compt_OND_SERIAL%
echo Entree "r" pour revenir en arriere:
echo Entree le numero d'onduleur:
set /P OndNum=":"
if /i !OndNum!==r goto affichage
if !OndNum!==0 goto _RchOnd
if !OndNum! GTR %compt_OND_SERIAL% goto _RchOnd
::Recherche les numero de series en fonction du num de l'onduleur
for /f "tokens=1,* delims=;" %%i in ('findstr /n /r . "!ONDULEUR_SERIAL!" ^| findstr "^^!OndNum!:"') do (set data=%%i) && (set data_serial=%%j)
goto part_4
:part_4
for /f "usebackq tokens=*" %%A in ("!data_serial!") do (
set ligne=%%A
set modif=!ligne:;;;;;;;;=;NONE;NONE;NONE;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;;;;=;NONE;NONE;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;;;=;NONE;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;;=;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;=;NONE;NONE;NONE;!
set modif=!modif:;;;=;NONE;NONE;!
set modif=!modif:;;=;NONE;!
echo !modif!
for /f "tokens=1,2,3,4,5,6,7,8 delims=;" %%a in ('echo !modif!') do (
if POP%%a==POP (set Partie_haute=NONE) else (set Partie_haute=%%a)
if POP%%b==POP (set Carte_Filtre_AC=NONE) else (set Carte_Filtre_AC=%%b)
if POP%%c==POP (set Carte_Relais=NONE) else (set Carte_Relais=%%c)
if POP%%d==POP (set Carte_Commande=NONE) else (set Carte_Commande=%%d)
if POP%%e==POP (set Nouvelle_Carte_Filtre_AC=NONE) else (set Nouvelle_Carte_Filtre_AC=%%e)
if POP%%f==POP (set Nouvelle_Carte_Commande=NONE) else (set Nouvelle_Carte_Commande=%%f)
if POP%%g==POP (set annotation=NONE) else (set annotation=%%g)
if POP%%h==POP (set Date_x=NONE) else (set Date_x=%%h)
if %%a==!OndNum! (call :End_RchOnd)
)
)
exit
:End_RchOnd
::RESULTAT, affichage des donnees.
color 0C
cls
call :Plan_addressage
echo.
echo RESULTAT:
echo Numero_Onduleur:"!OndNum!" ,Adresse:"OndAddr"
echo.
echo --------------------------------------------------------------------
echo SERIAL:
echo Partie_haute: "!Partie_haute!"
echo Carte_Filtre_AC: "!Carte_Filtre_AC!"
echo Carte_Relais: "!Carte_Relais!"
echo Carte_Commande: "!Carte_Commande!"
echo --------------------------------------------------------------------
echo.
echo --------------------------------------------------------------------
echo SERIAL NEW:
echo Nouvelle_Carte_Filtre_AC: "!Nouvelle_Carte_Filtre_AC!"
echo Nouvelle_Carte_Commande: "!Nouvelle_Carte_Commande!"
echo Date: "!Date_x!"
echo Annotation: "!annotation!"
echo --------------------------------------------------------------------
echo.
pause
goto :eof
rem
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
Modifié le 21 avril 2017 à 23:34
Modifié le 21 avril 2017 à 23:34
Du coup j'ai trouver je recupere bien mes deux valeur %%I %%J, par contre la condition ne marche pas ...
:ligne set /a boucle_ligne+=1 for /f "tokens=1,* delims=;" %%i in ('findstr /n /r . "!ONDULEUR_SERIAL!" ^| findstr "^^%boucle_ligne%:"') do (set data=%%i) && (set data_serial=%%j) echo data:!data! , data_serial:!data_serial! if /I !OndNum!==!data! ( goto End_RchOnd ) if !boucle_ligne!==!compt_OND_SERIAL! goto End_RchOnd goto ligne
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
Modifié le 22 avril 2017 à 01:11
Modifié le 22 avril 2017 à 01:11
Bon bon bon, Là j'ai un pb que j'arrive pas a resoudre
Mon fichier txt sur lequiel je travaille:
LE RESULTAT:
Numero_Onduleur:"1" ,Adresse:"OndAddr"
SERIAL:
Partie_haute: "1516167704"
Carte_Filtre_AC: "1515111908"
Carte_Relais: "1515132948"
Carte_Commande: "1515118378"
SERIAL NEW:
Nouvelle_Carte_Filtre_AC: "1641114884"
Nouvelle_Carte_Commande: "11/04/2017"
Date: ""
Anootation: ""
MON PROBLEME:
Si je ne mets pas despace entre met jeton dans mon fichier text, il me decale ma ligne DATE sur Carte commande !! Cest pas bon du tout quelqun a une idee ?
Mon fichier txt sur lequiel je travaille:
001;1516167704;1515111908;1515132948;1515118378;1641114884;;11/04/2017
echo Entree le numero d'onduleur: set /P OndNum=":" ::Recherche les numero de series en fonction du num de l'onduleur for /f "tokens=1,* delims=;" %%i in ('findstr /n /r . "!ONDULEUR_SERIAL!" ^| findstr "^^%OndNum%:"') do (set data=%%i) && (set data_serial=%%j) set Partie_haute=NONE set Carte_Filtre_AC=NONE set Carte_Relais=NONE set Carte_Commande=NONE set Nouvelle_Carte_Filtre_AC=NONE set Nouvelle_Carte_Commande=NONE set Date_x=NONE set annotation=NONE for /f "tokens=1,2,3,4,5,6,7,8 delims=;" %%a in ("!data_serial!") do (set Partie_haute=%%a) && (set Carte_Filtre_AC=%%b) && (set Carte_Relais=%%c) && (set Carte_Commande=%%d) && (set Nouvelle_Carte_Filtre_AC=%%e) && (set Nouvelle_Carte_Commande=%%f) && (set Date_x=%%g) && (set annotation=%%h)
LE RESULTAT:
Numero_Onduleur:"1" ,Adresse:"OndAddr"
SERIAL:
Partie_haute: "1516167704"
Carte_Filtre_AC: "1515111908"
Carte_Relais: "1515132948"
Carte_Commande: "1515118378"
SERIAL NEW:
Nouvelle_Carte_Filtre_AC: "1641114884"
Nouvelle_Carte_Commande: "11/04/2017"
Date: ""
Anootation: ""
MON PROBLEME:
Si je ne mets pas despace entre met jeton dans mon fichier text, il me decale ma ligne DATE sur Carte commande !! Cest pas bon du tout quelqun a une idee ?
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 22 avril 2017 à 08:42
Modifié le 22 avril 2017 à 08:42
Bonjour,
Je ne comprend pas ta première boucle for, plus particulièrement ceci :
A quelle chaîne de caractères fait référence le findstr ???
Je ne comprend pas ta première boucle for, plus particulièrement ceci :
('findstr /n /r . "!ONDULEUR_SERIAL!" ^| findstr "^^%OndNum%:"')
A quelle chaîne de caractères fait référence le findstr ???
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
22 avril 2017 à 20:42
22 avril 2017 à 20:42
Au numero de ligne
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 22 avril 2017 à 22:52
Modifié le 22 avril 2017 à 22:52
Je viens de tester avec succès ceci :
@echo off
color 0A
Setlocal enableextensions enabledelayedexpansion
cls
echo Entree le numero d'onduleur:
set /P OndNum=":"
:: Recherche les numero de series en fonction du num de l'onduleur
for /f "tokens=1,* delims=;" %%i in ('findstr /n /r . "!ONDULEUR_SERIAL!" ^| findstr "^^%OndNum%:"') do (set data=%%i) && (set data_serial=%%j)
for /f "tokens=*" %%A in ("!data_serial!") do (
set ligne=%%A
set modif=!ligne:;;;;;;;=;NONE;NONE;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;;;=;NONE;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;;=;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;=;NONE;NONE;NONE;!
set modif=!modif:;;;=;NONE;NONE;!
set modif=!modif:;;=;NONE;!
for /f "tokens=1,2,3,4,5,6,7,8 delims=;" %%a in ('echo !modif!') do (
if POP%%a==POP (set Partie_haute=NONE) else (set Partie_haute=%%a)
if POP%%b==POP (set Carte_Filtre_AC=NONE) else (set Carte_Filtre_AC=%%b)
if POP%%c==POP (set Carte_Relais=NONE) else (set Carte_Relais=%%c)
if POP%%d==POP (set Carte_Commande=NONE) else (set Carte_Commande=%%d)
if POP%%e==POP (set Nouvelle_Carte_Filtre_AC=NONE) else (set Nouvelle_Carte_Filtre_AC=%%e)
if POP%%f==POP (set Nouvelle_Carte_Commande=NONE) else (set Nouvelle_Carte_Commande=%%f)
if POP%%g==POP (set annotation=NONE) else (set annotation=%%g)
if POP%%h==POP (set Date_x=NONE) else (set Date_x=%%h)
echo.
echo Partie_haute = !Partie_haute!
echo Carte_Filtre_AC = !Carte_Filtre_AC!
echo Carte_Relais = !Carte_Relais!
echo Carte_Commande = !Carte_Commande!
echo Nouvelle_Carte_Filtre_AC = !Nouvelle_Carte_Filtre_AC!
echo Nouvelle_Carte_Commande = !Nouvelle_Carte_Commande!
echo annotation = !annotation!
echo Date_x = !Date_x!
echo. & pause
)
)
exit
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
Modifié le 23 avril 2017 à 13:13
Modifié le 23 avril 2017 à 13:13
Je comprends pas Le "POP", elle vient d(ou cette variable ?
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
>
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
Modifié le 23 avril 2017 à 13:10
Modifié le 23 avril 2017 à 13:10
Ce n'est pas une variable, j'aurais pu mettre n'importe quel caractère à la place de POP, c'est un clin d'oeil à ton pseudo ;)
Je teste simplement si chaque token/variable est non nul, si c'est nul je définis ce token/variable à NONE
Je teste simplement si chaque token/variable est non nul, si c'est nul je définis ce token/variable à NONE
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
23 avril 2017 à 13:27
23 avril 2017 à 13:27
aah okk :-) mais ca marche pas:
:_RchOnd
set OndNum=0
set compt_OND_SERIAL=0
for /f "delims=" %%i in ('type "!ONDULEUR_SERIAL!"') do set /a compt_OND_SERIAL+=1
cls
call :Plan_addressage
::Donne l'adresse d'un numéro d'onduleur
echo %compt_OND_SERIAL%
echo Entree "r" pour revenir en arriere:
echo Entree le numero d'onduleur:
set /P OndNum=":"
if %OndNum%==r goto affichage
if %OndNum%==0 goto _RchOnd
if %OndNum% GTR %compt_OND_SERIAL% goto _RchOnd
::Recherche les numero de series en fonction du num de l'onduleur
for /f "tokens=1,* delims=;" %%i in ('findstr /n /r . "!ONDULEUR_SERIAL!" ^| findstr "^^%OndNum%:"') do (set data=%%i) && (set data_serial=%%j)
goto part_4
:part_4
for /f "tokens=*" %%A in ("!data_serial!") do (
set ligne=%%A
set modif=!ligne:;;;;;;;=;NONE;NONE;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;;;=;NONE;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;;=;NONE;NONE;NONE;NONE;!
set modif=!modif:;;;;=;NONE;NONE;NONE;!
set modif=!modif:;;;=;NONE;NONE;!
set modif=!modif:;;=;NONE;!
echo !modif!
pause
for /f "tokens=1,2,3,4,5,6,7,8 delims=;" %%a in ('echo !modif!') do (
if POP%%a==POP set Partie_haute=NONE else (set Partie_haute=%%a)
if POP%%b==POP set Carte_Filtre_AC=NONE else (set Carte_Filtre_AC=%%b)
if POP%%c==POP set Carte_Relais=NONE else (set Carte_Relais=%%c)
if POP%%d==POP set Carte_Commande=NONE else (set Carte_Commande=%%d)
if POP%%e==POP set Nouvelle_Carte_Filtre_AC=NONE else (set Nouvelle_Carte_Filtre_AC=%%e)
if POP%%f==POP set Nouvelle_Carte_Commande=NONE else (set Nouvelle_Carte_Commande=%%f)
if POP%%g==POP set annotation=NONE else (set annotation=%%g)
if POP%%h==POP set Date_x=NONE else (set Date_x=%%h)))
goto End_RchOnd
:End_RchOnd
::RESULTAT, affichage des donnees.
color 0C
cls
call :Plan_addressage
echo.
echo RESULTAT:
echo Numero_Onduleur:"!OndNum!" ,Adresse:"OndAddr"
echo.
echo --------------------------------------------------------------------
echo SERIAL:
echo Partie_haute: "%Partie_haute%"
echo Carte_Filtre_AC: "%Carte_Filtre_AC%"
echo Carte_Relais: "%Carte_Relais%"
echo Carte_Commande: "%Carte_Commande%"
echo --------------------------------------------------------------------
echo.
echo --------------------------------------------------------------------
echo SERIAL NEW:
echo Nouvelle_Carte_Filtre_AC: "%Nouvelle_Carte_Filtre_AC%"
echo Nouvelle_Carte_Commande: "%Nouvelle_Carte_Commande%"
echo Date: "%Date_x%"
echo Anootation: "%annotation%"
echo --------------------------------------------------------------------
pause
goto _RchOnd
::RESLUTAT
REM J'ai ajouter un echo !modif! pour voir, le resultat est bon, par contre dans la boucle suivante quelque chose ne va pas
:37
1516167680;1513937967;1513943931;1515134043;1640112089;NONE;18/04/2017;NONE;NONE;NONE;NONE;
Appuyez sur une touche pour continuer...
RESULTAT:
Numero_Onduleur:"37" ,Adresse:"OndAddr"
--------------------------------------------------------------------
SERIAL:
Partie_haute: ""
Carte_Filtre_AC: ""
Carte_Relais: ""
Carte_Commande: ""
--------------------------------------------------------------------
--------------------------------------------------------------------
SERIAL NEW:
Nouvelle_Carte_Filtre_AC: ""
Nouvelle_Carte_Commande: ""
Date: ""
Anootation: ""
--------------------------------------------------------------------
Appuyez sur une touche pour continuer...
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
>
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
Modifié le 23 avril 2017 à 13:35
Modifié le 23 avril 2017 à 13:35
Je dois m'absenter je regarderai ça ce soir.
Est-ce que tu pourrais me donner le contenu du fichier !data_serial! ?
Est-ce que tu pourrais me donner le contenu du fichier !data_serial! ?
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
Modifié le 23 avril 2017 à 13:56
Modifié le 23 avril 2017 à 13:56
Voici une partie de son contenu !data_serial!
Je mets pas tout seulement les 9 premieres lignes
Je mets pas tout seulement les 9 premieres lignes
001;1516167704;1515111908;1515132948;1515118378;1641114884;;11/04/2017;;;;;
002;1516167696;1513955869;1515995665;1515134039;1641114886;;11/04/2017;;;;;
003;1516167687;1514967927;1516148214;1516147403;1641114908;;11/04/2017;;;;;
004;1516167672;1514967995;1515132990;1515118370;1641114861;;11/04/2017;;;;;
005;1614125482;Manquant;Manquant;Manquant;Manquant;;11/04/2017;;;;;
006;1516167698;1513955867;1515995663;1515134036;Manquant;;11/04/2017;;;;;
007;1516167684;1514968018;1516148211;1515134057;1640128472;;11/04/2017;;;;;
008;1516167708;1513955766;1515995727;1511838069;1641115376;;11/04/2017;;;;;
009;1516167682;1516167682;1513955743;1516148209;1515134061;1641115374;11/04/2017;;;;;