Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
BESOIN D'UN PROGRAMME QUI TEST DES VALEURS SUR CHAQUE LIGNE
Auteur Message
Répondre en citant
Message BESOIN D'UN PROGRAMME QUI TEST DES VALEURS SUR CHAQUE LIGNE 
J'ai un fichier contenant des suites de valeurs dans ce format :
(nombre aléatoire de 1 a 60)

01 02 03 04 05 06
22 37 23 55 32 23
06 02 03 04 05 01


Il faut que je cree une variable pour chaque valeur de la premiere
ligne et tester toute les lignes suivantes pour voir si elle ne contiennent pas
ces mêmes valeurs (dans l'ordre ou dans le désordres)

et ensuite même chose pour la deuxieme ligne, pour la troisieme, etc.. jusqu'à la fin
du fichier.

En sortie il me faut un fichier ne contenant pas de doublons de lignes de valeurs

dans la liste ci-dessus il y aurait en sortie la ligne 1 et la ligne 2. La troisieme étant égale à la première.

Voilà si quelqu'un peut m'aider, ça fait trois jours que je me casse la tête avec des boucles FOR dans d'autres boucle FOR
sans succès. J'ai l'impression que c'est pas possible en batch.

MERCI D'AVANCE Rolling Eyes




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message BESOIN D'UN PROGRAMME QUI TEST DES VALEURS SUR CHAQUE LIGNE 
Bonjour,

Code:

@echo off
setlocal enabledelayedexpansion
set fichier=test.txt
rem on définit les 6 chaines de la première ligne
for /f "tokens=1-6" %%i in (%fichier%) do (if "!ligne1!"=="" (
set ligne1=ok&echo ligne 1 = [%%i %%j %%k %%l %%m %%n]
set ch1=%%i
set ch2=%%j
set ch3=%%k
set ch4=%%l
set ch5=%%m
set ch6=%%n
))
echo.
echo Lignes n'ayant aucune correspondance avec la premiere:
rem on affiche les lignes n'ayant aucune correspondance avec la première
set i=1
for /f "tokens=1-6 skip=1" %%i in (%fichier%) do (
set /a i+=1
if not "%%i"=="%ch1%" if not "%%j"=="%ch2%" if not "%%k"=="%ch3%" if not "%%l"=="%ch4%" if not "%%m"=="%ch5%" if not "%%n"=="%ch6%" (
echo ligne !i! = [%%i %%j %%k %%l %%m %%n]
))
echo.
pause




Dernière édition par Cαutex le Mar 10 Avr 2012 - 17:10; édité 1 fois

______________________________________________________
Mes principales réalisations: Cp (batch) et IPSvc (autoit)
Répondre en citant
Message BESOIN D'UN PROGRAMME QUI TEST DES VALEURS SUR CHAQUE LIGNE 
BONJOUR CMANIX,

Ton code est excellent.

Seulement il ne resout pas mon probleme pour 2 raisons :

1 : Il test si une des valeurs (n'importe laquel) de la ligne 1, existe dans les lignes suivantes alors il il élimine la ligne.
Ceci est gérable en modifiant un peu la structure de test dans la boucle.

2 : Il faut creer une variable pour chaque ligne du fichier.
Si les numero de la ligne 2 sont éguale au numero de la ligne 1 alors on set la variable à rien.
et on test la ligne suivante.

et repart avec la meme procedure avec la deuxieme, troisieme, etc.

Et au final on ecrit dans un fichier toutes les variables qui ne sont pas vide.


Avec ce Code :

Code:
set COUNT=0


for /f "tokens=*" %%A in ('type fichier.txt') do (
    set /a COUNT=COUNT + 1
    set VAR!COUNT!=%%A
      )


J'arrive attribuer une variable a chaque ligne mais ensuite je n'arrive pas a utiliser cette variable

en utilisant : echo var!count! pour qu'il m'affiche la liste correspondante (01 02 03 04 05 06)

il m'affiche : var1

J'aimerais qu'il interprete la valeur qu'il y a dans var1.

C'est compliqué !!!
MERCI




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message BESOIN D'UN PROGRAMME QUI TEST DES VALEURS SUR CHAQUE LIGNE 
1: pour le problème d'affichage de "var1" par exemple, à tu testé avec "!var%%i!" qui peut se trouver dans une boucle "for /l %%i in (1,1,%COUNT%) do echo [!var%%i!]" ?

2: pour ce qui est des test des correspondances entre les variables, c'est plus compliqué que ce que j’avais compris au début. Pour faire sa bien je pense qu'il va faloir développer une ou plusieurs fonction utilisable avec call pour traiter les correspondances. En attendant si j'ai bien compris (par rapport au premier code que j'ai posté):
-la première variable sert de référence?
-le test des 6 chaines de chaque ligne doit aussi se faire dans le désordre ?
-en sortie je ne te comprend pas bien. tu ne veux pas que les lignes qui n'ont aucune correspondance ?




______________________________________________________
Mes principales réalisations: Cp (batch) et IPSvc (autoit)
Répondre en citant
Message BESOIN D'UN PROGRAMME QUI TEST DES VALEURS SUR CHAQUE LIGNE 
Salut Cmanix

C'est exactement ça !

Mais pas de panique j'ai enfin réussi !
C'était pas si compliqué.

En fait il faut éliminer par le haut du fichier
on recupere la premiere liste dans fichier
on copie fichier vers fichier1 sans la premiere liste à l'aide de :
Code:
more /e +1 fichier.txt>>fichier1.txt

on test si on a une occurence si on en a une on ne fait rien (en fait on test jusqu'a ce que l'on ai plus d'occurence pour chaque liste)
si on plus d'occurence on ecrit la valeur de la liste dans fichierfinal
on copie fichier1 vers fichier (ainsi on élimine la premiere liste que l'on a testé)
et on recommence.

MERCI de t'être creuser la tête sur mon prob.




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Message BESOIN D'UN PROGRAMME QUI TEST DES VALEURS SUR CHAQUE LIGNE 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



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