.bat incémenter un compteur
Résolu
kimojo
Messages postés
402
Statut
Membre
-
dubcek Messages postés 18786 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18786 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai trouvé ce script sur le forum :
In fait en quelque sort un uniq sur le fichier f1.
$ type f1.txt
Group = toto, nom = toto, ville = paris
Group = titi, nom = titi, ville = lille
Group = toto, nom = toto, ville = paris
Group = tata, nom = tata, ville = toulouse
$ type bb.bat
@echo off
copy /Y NUL z1 > NUL
set i=-1
for /f "tokens=4 delims==," %%a in ('type f1.txt') do (
set/a i+=1
echo/%%a >> z1)
set dest=z2
copy /Y NUL %dest% > NUL
for /F %%n in ('type z1') do (
findstr %%n %dest% > NUL
if errorlevel 1 echo %%n >> %dest%)
type z2
Admettons que f1 se transforme en :
$ type f1.txt
Group = toto, nom = toto, ville = paris, voyage=2
Group = titi, nom = titi, ville = lille, voyage=5
Group = toto, nom = toto, ville = paris, voyage=4
Group = tata, nom = tata, ville = toulouse, voyage=3
Comment obtenir ça :
toto 6
titi 5
tata 3
Merci
J'ai trouvé ce script sur le forum :
In fait en quelque sort un uniq sur le fichier f1.
$ type f1.txt
Group = toto, nom = toto, ville = paris
Group = titi, nom = titi, ville = lille
Group = toto, nom = toto, ville = paris
Group = tata, nom = tata, ville = toulouse
$ type bb.bat
@echo off
copy /Y NUL z1 > NUL
set i=-1
for /f "tokens=4 delims==," %%a in ('type f1.txt') do (
set/a i+=1
echo/%%a >> z1)
set dest=z2
copy /Y NUL %dest% > NUL
for /F %%n in ('type z1') do (
findstr %%n %dest% > NUL
if errorlevel 1 echo %%n >> %dest%)
type z2
Admettons que f1 se transforme en :
$ type f1.txt
Group = toto, nom = toto, ville = paris, voyage=2
Group = titi, nom = titi, ville = lille, voyage=5
Group = toto, nom = toto, ville = paris, voyage=4
Group = tata, nom = tata, ville = toulouse, voyage=3
Comment obtenir ça :
toto 6
titi 5
tata 3
Merci
A voir également:
- .bat incémenter un compteur
- Creer un fichier .bat - Guide
- Compteur de contractions - Télécharger - Santé & Bien-être
- Bat to exe converter - Télécharger - Édition & Programmation
- Compteur communicant - Guide
- Compteur point fléchette excel - Télécharger - Sport
24 réponses
parce qu'en spécifiant : comme séparateur, 2h:07m:50s n'est plus un seul champ mais 3, il ne faut plus utiliser split, mais sub pour enlever les lettres h, m ou s des champs 10, 11 et 12.
avec sub, je substitue la lettre entre " par rien "" et je n'ai plus de tableau t
$ type f1.awk
{x[$4]+=$8; y[$4]+=$14; sub("h","",$10); sub("m", "", $12);sub("s","",$12); h[$4]+=$10;m[$4]+=$11;s[$4]+=$12} ;
END {for (n in x) { s1=s[n]%60 ; s2=int(s[n]/60); m1=(m[n]+s2)%60;m2=int((m[n]+s2)/60);h1=h[n]+m2;
print n, x[n], y[n], h1"h",m1"m",s1"s"}}
$ gawk -F"[,=:]" -f f1.awk < f3.txt
tata 3 7 4h 16m 11s
toto 6 9 5h 9m 9s
titi 5 3 2h 7m 50s
avec sub, je substitue la lettre entre " par rien "" et je n'ai plus de tableau t
$ type f1.awk
{x[$4]+=$8; y[$4]+=$14; sub("h","",$10); sub("m", "", $12);sub("s","",$12); h[$4]+=$10;m[$4]+=$11;s[$4]+=$12} ;
END {for (n in x) { s1=s[n]%60 ; s2=int(s[n]/60); m1=(m[n]+s2)%60;m2=int((m[n]+s2)/60);h1=h[n]+m2;
print n, x[n], y[n], h1"h",m1"m",s1"s"}}
$ gawk -F"[,=:]" -f f1.awk < f3.txt
tata 3 7 4h 16m 11s
toto 6 9 5h 9m 9s
titi 5 3 2h 7m 50s
J'ai testé en retirant : sub("h","",$10); sub("m", "", $11);sub("s","",$12);
Pour n'avoir que ça :
{x[$4]+=$8; y[$4]+=$14; h[$4]+=$10;m[$4]+=$11;s[$4]+=$12} ;
END {for (n in x) { s1=s[n]%60 ; s2=int(s[n]/60); m1=(m[n]+s2)%60;m2=int((m[n]+s2)/60);h1=h[n]+m2;
print n, x[n], y[n], h1"h",m1"m",s1"s"}}
Du coup le sub n'a pas forcément une utilité si ?
Pour n'avoir que ça :
{x[$4]+=$8; y[$4]+=$14; h[$4]+=$10;m[$4]+=$11;s[$4]+=$12} ;
END {for (n in x) { s1=s[n]%60 ; s2=int(s[n]/60); m1=(m[n]+s2)%60;m2=int((m[n]+s2)/60);h1=h[n]+m2;
print n, x[n], y[n], h1"h",m1"m",s1"s"}}
Du coup le sub n'a pas forcément une utilité si ?