Parcourir tout les fichier d'un dossier et detecter des mots [Resolu] - Shell/Batch - Programmation
Marsh Posté le 05-10-2007 à 13:37:45
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 ?
Marsh Posté le 05-10-2007 à 14:00:16
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 ?
Marsh Posté le 05-10-2007 à 14:20:47
un truc de ce genre peut etre:
Code :
|
à mettre dans un fichier .bat ou alors utiliser qu'un seul % pour tester en ligne de commande.
Marsh Posté le 05-10-2007 à 14:42:42
Merci pour ton aide, mais là je comprend pas grand chose, mes neurones sont pauvres ^^
Je mets ça dans un bat/cmd:
Code :
|
Ca me met dans le fichier texte, erreur.txt ceci:
Code :
|
Ca ne m'indique aucun des fichier qui contient les mots clé, raaah, je suis nul
Euuuh fallait bien que je remplace les tiret "------" de ton exemple par les mot clé ?
Code :
|
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
Marsh Posté le 05-10-2007 à 14:57:45
Sokarz a écrit : |
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 :
|
Marsh Posté le 06-10-2007 à 03:06:55
Merci beaucoup pour votre aide à tous les deux
Pendant une heure j'ai essayer plein de modif de ce type:
Code :
|
ce qui affiche le resultat comme cela:
Code :
|
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 :
|
Et là Ô miracle le fichier de sortie:
Code :
|
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
Marsh Posté le 06-10-2007 à 05:45:49
ah oui, j'avais carrement oublié cette commande, comme quoi
Marsh Posté le 05-10-2007 à 13:32:28
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