Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1251 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Resolu] Parcourir tout les fichier d'un dossier et detecter des mots

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] Parcourir tout les fichier d'un dossier et detecter des mots

n°1619632
Sokarz
Moi aussi, je le vaut bien :-)
Posté le 05-10-2007 à 13:32:28  profilanswer
 

Voilà mon probleme:
 
J'ai un dossier, ce dossier contient plusieurs dizaine de fichier de la meme extension de type: blabla.Challenge.Gbx
J'aimerai avoir un batch qui parcourt donc tout ces fichier ".Challenge.Gbx", et à chaque fois que l'un de ces fichiers contient l'un de ces mots:
 
lycos
neuf
skynet
shootpidoo
zvision
2fast4you

 
Il faudrait que le batch crée un fichier texte dans le dossier, qui me signale quel fichier contient l'un de ces mot, inutile de preciser lequel de ces mots.
 
Fichier texte de ce genre:
 
Nom du fichier: blabla.Challenge.Gbx
Nom du fichier: blabla14.Challenge.Gbx
 
Pensez pouvoir m'aider à faire ça ?
 
Ce batch me ferai gagner un temps précieux, plutot que d'utiliser un editeur de texte et faire une recherche sur tout les fichiers...
 
Merci d'avance pour votre aide  ;)


Message édité par Sokarz le 06-10-2007 à 03:09:52
mood
Publicité
Posté le 05-10-2007 à 13:32:28  profilanswer
 

n°1619638
olivthill
Posté le 05-10-2007 à 13:37:45  profilanswer
 

Avec quel système d'exploitation, quel shell ?
 
Si c'est sous Unix, c'est possible de le faire avec un grep ou egrep
Si c'est sous DOS, il faudrait utiliser la commande find
Si c'est sous Windows, un petit programme VBS peut faire cela.
 
Ca ressemble à une question de cours. Est-ce que c'est le cas ?

n°1619661
Sokarz
Moi aussi, je le vaut bien :-)
Posté le 05-10-2007 à 14:00:16  profilanswer
 

Sur Windows XP et Vista.
 
Et non c'est pas pour un cours (du tout... 33 ans inside lol) en fait c'est pour une team de jeux, on à des "map", et certaine sont "corrompu" dans le sens ou elle comportent des erreur dans la "map", c'est un bug en rapport avec le jeu Trackmania United, je ne rentrerai pas dans les details c'est long et fastidieux à expliquer. On sais comment corriger le probleme, mais aavnt ça i lfaut identifier quel fichier est "corrompu" par des url foireuse, ces url correspondent au mot cité plus haut, d'ou la liste des mots...
 
Comme il nous faudrait un quelque chose de simple, rapide, efficace, j'ai eu l'idée d'utiliser un batch. Mais ça me dépasse, je ne connais aps l'utilisation des commandes for, find, if,...  
 
Dans l'idée, un batch (ou script vbs) qui parcourt tous les fichiers comme expliquer dans mon post initial, et lorsque un fichier comporte l'un des mots cité plus haut, le batch crée un fichier un fichier texte, en indiquant le nom du fichier qui contient l'un des mots "malheureux"
 
A partir de là, avoir un batch ou script faisant cela, je serai plus qu'heureux ^^
 
Je pense que en batch c'est faisable, mais ça depasse largement mes connaissance des batch (helas), je suppose qu'avec les commandes "for find string >> echo erreur.txt" (je schematise voir caricature) c'est faisable, mais je ne sais pas le faire, et mes malgré mes recherches sur le net ou sur ce forum, je n'ai pas trouvés de batch qui propose de faire ça.
 
Fichier VBS, je ne suis pas contre (je ne vais tout de meme pas me plaindre que l'on m'aide!), il faudrait simplement que le script soit compatible Xp/Vista est soit fonctionnel car je ne saurais pas l'adapter car je ne comprend pas le Vbs.
 
Pense tu pouvoir m'aider ?


Message édité par Sokarz le 05-10-2007 à 14:00:58
n°1619685
tuxce
Posté le 05-10-2007 à 14:20:47  profilanswer
 

un truc de ce genre peut etre:

Code :
  1. (for %%a in (lycos neuf skynet shootpidoo zvision 2fast4you) do find "%%a" *.Challenge.Gbx ) | find "------" | sort


à mettre dans un fichier .bat ou alors utiliser qu'un seul % pour tester en ligne de commande.

n°1619723
Sokarz
Moi aussi, je le vaut bien :-)
Posté le 05-10-2007 à 14:42:42  profilanswer
 

Merci pour ton aide, mais là je comprend pas grand chose, mes neurones sont pauvres ^^
 
Je mets ça dans un bat/cmd:
 

Code :
  1. (for %%a in (lycos neuf skynet shootpidoo zvision 2fast4you) do find "%%a" *.Challenge.Gbx ) | find "lycos neuf skynet shootpidoo zvision 2fast4you" | sort echo >> erreur.txt


 
Ca me met dans le fichier texte, erreur.txt ceci:
 

Code :
  1. Commande ECHO activ‚e.


 
Ca ne m'indique aucun des fichier qui contient les mots clé, raaah, je suis nul  :sweat:  
 
Euuuh fallait bien que je remplace les tiret "------" de ton exemple par les mot clé ?
 

Code :
  1. (for %%a in (lycos neuf skynet shootpidoo zvision 2fast4you) do find "%%a" *.Challenge.Gbx ) | find "------" | sort echo >> erreur.txt


 
Et mettre un echo >> erreur.txt pour que ça crée le fichier texte ?
 
Aider moi, svp, je ne suis qu'un malheureux pauvre noob lol

n°1619746
tuxce
Posté le 05-10-2007 à 14:57:45  profilanswer
 

Sokarz a écrit :


Aider moi, svp, je ne suis qu'un malheureux pauvre noob lol


ca n'empêche pas de se documenter ou au minimum tester ;)
 
la commande est à écrire telle qu'elle est dans le fichier bat.
les "-------" sont à laisser, c'est ce qu'utilise find pour te dire le nom du fichier.
tu peux faire un simple test:

find "lycos" *.Challenge.Gbx


 
le echo est une commande et n'a rien à faire après sort!
si tu veux rediriger le résultat:

Code :
  1. (for %%a in (lycos neuf skynet shootpidoo zvision 2fast4you) do find "%%a" *.Challenge.Gbx ) | find "------" | sort > erreur.txt


 

n°1620023
Sokarz
Moi aussi, je le vaut bien :-)
Posté le 06-10-2007 à 03:06:55  profilanswer
 

Merci beaucoup pour votre aide à tous les deux ;)
 
Pendant une heure j'ai essayer plein de modif de ce type:
 

Code :
  1. @echo off
  2. (for %%a in (lycos neuf skynet shootpidoo zvision 2fast4you) do find /c "%%a" *.Challenge.Gbx) | find "------" | sort /r > erreur2.txt
  3. findstr "1" erreur2.txt | sort > erreur3.txt
  4. del /q erreur2.txt
  5. ren erreur3.txt _map-corrompu.txt
  6. exit


 
ce qui affiche le resultat comme cela:
 

Code :
  1. ---------- EXEMPLEA.CHALLENGE.GBX: 1
  2. ---------- EXEMPLEB.CHALLENGE.GBX: 1
  3. ---------- EXEMPLEB.CHALLENGE.GBX: 1


 
Ce qui ne m'arrrangait pas du tout, car si un fichier avais plus de un de ces mots "lycos neuf skynet shootpidoo zvision 2fast4you" le nom du fichier apparaissait plusieurs fois dans le fichier de sortie :(
 
Donc après avoir fouiller find /? et findstr /?
 
Je suis tombé sur cette variante:
 

Code :
  1. FINDSTR /S /M "lycos neuf skynet shootpidoo zvision 2fast4you" *.GBX > _map-corrompu.txt


 
Et là Ô miracle le fichier de sortie:
 

Code :
  1. ExempleA.Challenge.Gbx
  2. ExempleB.Challenge.Gbx


 
Fini les tiret, fini les doublon ! Comme quoi parfois une commande "toute bête" peut faire de joli chose.....
 
Du coup j'ai trouvé mon bonheur ^^
 
Encore merci pour le coup de main qui m'a mis sur la piste  :wahoo:


Message édité par Sokarz le 06-10-2007 à 03:08:24
n°1620025
tuxce
Posté le 06-10-2007 à 05:45:49  profilanswer
 

ah oui, j'avais carrement oublié cette commande, comme quoi :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Resolu] Parcourir tout les fichier d'un dossier et detecter des mots

 

Sujets relatifs
VBA: aller chercher la valeur d'une cellule d'un autre fichier ouvert[RESOLU] Trier sur deux tables
[Résolu]Modifier les style de lien pour une partie seulement[resolu][java/mysql] restauration de dump
Soucis avec mon premier fichier XSL[Résolu] Problème de compilation Qt
[ résolu tout seul ] variables GET en un seul parametre[Résolu] Creer et afficher des thumbnail dynamiquement
[Résolu] Erreur de collationtrouver le fichier le plus récent
Plus de sujets relatifs à : [Resolu] Parcourir tout les fichier d'un dossier et detecter des mots


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR