.bat afficher une seule fois le nom
M Dupond
-
M Dupond -
M Dupond -
Bonjour,
J'ai créé un fichier .bat qui quand il est exécuter, m'affiche le 6eme bloc de chaque ligne.
set i=-1
for /f "tokens=6" %%a in ('more ^< test.txt') do (
set/a i+=1
echo/%%a
)
J'obtiens comme résultat :
toto,
titi,
toto,
tata,
Mon soucis c'est que je ne veux pas que la virgule apparaisse mais je n'arrive pas à la supprimer. De plus je n'arrive pas à afficher seulement une fois toto.
Merci
J'ai créé un fichier .bat qui quand il est exécuter, m'affiche le 6eme bloc de chaque ligne.
set i=-1
for /f "tokens=6" %%a in ('more ^< test.txt') do (
set/a i+=1
echo/%%a
)
J'obtiens comme résultat :
toto,
titi,
toto,
tata,
Mon soucis c'est que je ne veux pas que la virgule apparaisse mais je n'arrive pas à la supprimer. De plus je n'arrive pas à afficher seulement une fois toto.
Merci
A voir également:
- .bat afficher une seule fois le nom
- Creer un fichier .bat - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
- Trouver un nom avec une adresse ✓ - Forum Réseaux sociaux
17 réponses
Group = toto, nom = toto, ville = paris
Group = titi, nom = titi, ville = lille
Group = toto, nom = toto, ville = paris
Group = tata, nom = tata, ville = toulouse
Group = titi, nom = titi, ville = lille
Group = toto, nom = toto, ville = paris
Group = tata, nom = tata, ville = toulouse
malheureusement la virgule fait partie du bloc, il faut améliorer ton script pour lui dire de ne pas copier le caractère "," et de ne pas afficher les doublons (pour le toto...). je ne suis pas assez calé en bat pour te le faire, je me renseigne et si je trouve je reviendrai voir si personne n'a donné la soluce.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui je sais bien qu'il faut améliorer mon script, c'est pour ça que je viens içi, si il faisait tout ce que je veux, je ne demanderais pas :)
Mais malheureusement je n'arrive pas à le faire.
SI tu trouves comment faire, je te remercie d'avance pour ton aide.
Mais malheureusement je n'arrive pas à le faire.
SI tu trouves comment faire, je te remercie d'avance pour ton aide.
hello
changer de delimiteur
$ type aa.bat
@echo off
set i=-1
for /f "tokens=4 delims==," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
toto
titi
toto
tata
changer de delimiteur
$ type aa.bat
@echo off
set i=-1
for /f "tokens=4 delims==," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
toto
titi
toto
tata
Merci ça fonctionne.
J'avais déja essayer mais avec delims=, au lieu de delim==,
Il y a un truc que je ne comprend pas par contre.
Pourquoi quand on met
tokens=4 delims==,
Les 2 égales ne sont pas pris en compte, c'est à dire qu'avec token=4 j'obtiens bien les noms.
Mais quand on met juste
tokens=4
Il faut prendre en compte les 2 égales,c'est à dire qu'on obtient le mot nom.
J'ai l'impression que ce n'est pas clair ce que je dis donc exemple :)
$ type aa.bat
@echo off
set i=-1
for /f "tokens=4 delims==," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
toto
titi
toto
tata
$ type aa.bat
@echo off
set i=-1
for /f "tokens=4," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
nom
nom
nom
nom
Et tu coup il faut mettre token 6 et donner au 2 égales un peu sur dans la ligne, un token.
$ type aa.bat
@echo off
set i=-1
for /f "tokens=6," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
toto,
titi,
toto,
tata,
Je chipote puisque ton système fonctionne mais c'est pour bien comprendre.
Sinon pour l'autre partie de ma question, c'est à dire de supprimer le doublon toto.
Merci
J'avais déja essayer mais avec delims=, au lieu de delim==,
Il y a un truc que je ne comprend pas par contre.
Pourquoi quand on met
tokens=4 delims==,
Les 2 égales ne sont pas pris en compte, c'est à dire qu'avec token=4 j'obtiens bien les noms.
Mais quand on met juste
tokens=4
Il faut prendre en compte les 2 égales,c'est à dire qu'on obtient le mot nom.
J'ai l'impression que ce n'est pas clair ce que je dis donc exemple :)
$ type aa.bat
@echo off
set i=-1
for /f "tokens=4 delims==," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
toto
titi
toto
tata
$ type aa.bat
@echo off
set i=-1
for /f "tokens=4," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
nom
nom
nom
nom
Et tu coup il faut mettre token 6 et donner au 2 égales un peu sur dans la ligne, un token.
$ type aa.bat
@echo off
set i=-1
for /f "tokens=6," %%a in ('type test.txt') do (
set/a i+=1
echo/%%a
)
$ aa
toto,
titi,
toto,
tata,
Je chipote puisque ton système fonctionne mais c'est pour bien comprendre.
Sinon pour l'autre partie de ma question, c'est à dire de supprimer le doublon toto.
Merci
le premier = fait partie de delims : delims=<séparateur><séparateur>
help for
delims=xxx - spécifie un ensemble de délimiteurs. Ceci remplace
l'ensemble de délimiteurs par défaut qui sont
l'espace et la tabulation.
ah oui le doublon, je n'avais pas fait attention
help for
delims=xxx - spécifie un ensemble de délimiteurs. Ceci remplace
l'ensemble de délimiteurs par défaut qui sont
l'espace et la tabulation.
ah oui le doublon, je n'avais pas fait attention
pour les doublons, je ne vois pas trop en DOS, je te dirais de charger la commande Unix uniq pour DOS qui fait ca
https://sourceforge.net/projects/unxutils/files/unxutils/current/
$ aa|sort|uniq
tata
titi
toto
https://sourceforge.net/projects/unxutils/files/unxutils/current/
$ aa|sort|uniq
tata
titi
toto
J'ai un petit soucis. A partir de ton lien, je peux télécharger 2 fichiers.
UnxUtils.zip et UnxUtilsSrc.zip
Le UnxUtilsSrc.zip, j'ai pleins de dossier dedans mais pas de uniq.
J'ai donc pri le UnxUtils.zip pour i386. Je ne sais pas si c'est comptatible.
En fouillant dans les dossiers j'ai un uniq içi \UnxUtils\usr\local\wbin
Cependant quand je l'exécute la fenêtre dos s'ouvre mais avec rien dedans :/
En gros je ne sais pas trop comment l'installer.
C'est dommage que tu saches pas faire juste en commande dos car je pense qu'il y aurait eu un if et du coup j'aurais pu rajouter des choses que j'aimerais faire a chaque fois qu'il trouve un doublon :/
UnxUtils.zip et UnxUtilsSrc.zip
Le UnxUtilsSrc.zip, j'ai pleins de dossier dedans mais pas de uniq.
J'ai donc pri le UnxUtils.zip pour i386. Je ne sais pas si c'est comptatible.
En fouillant dans les dossiers j'ai un uniq içi \UnxUtils\usr\local\wbin
Cependant quand je l'exécute la fenêtre dos s'ouvre mais avec rien dedans :/
En gros je ne sais pas trop comment l'installer.
C'est dommage que tu saches pas faire juste en commande dos car je pense qu'il y aurait eu un if et du coup j'aurais pu rajouter des choses que j'aimerais faire a chaque fois qu'il trouve un doublon :/
essaye ca
$ aa|sort > z1
$ type z1
tata
titi
toto
toto
$ bb
$ type z2
tata
titi
toto
$ type bb.bat
@echo off
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%
)
$ aa|sort > z1
$ type z1
tata
titi
toto
toto
$ bb
$ type z2
tata
titi
toto
$ type bb.bat
@echo off
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%
)
ça marche niquel. Il faudrait que je vois demain si c'est possible que je l'intègre à l'autre fichier .bat plutot que j'ai 2 fichiers différent.
En tout cas un grand merci
En tout cas un grand merci
j'ai fait un autre bat pour tester, mais ca devrait se mélanger sans problème, le sort n'est utile que si on utilise la commande uniq
$ 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
$ bb
toto
titi
tata
$ 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
$ bb
toto
titi
tata