| Mara's dad |
Bon, on commence par le ">" et le ">>"
Se sont des ordres de redirection de la sortie "Standard"
Par défaut, la sortie standard, c'est la "Console" (le prériphérique CON: ), c'est à dire l'écran dans 99.99999% des cas.
Donc si tu redirige la sortie, c'est pour que çà n'aille pas sur l'écran, mais ailleur, dans le fichier "resultat.txt" dans ton cas.
">" Va créer le fichier pour y mettre le résultat de l'opération. Donc si le fichier éxiste, il sera écrasé.
">>" Ajoute le résultat de l'opération à la fin du fichier. Si le fichier n'éxiste pas, il est créé.
ECHO est une commande qui envoie les paramètres sur la sortie standard (l'écran !)
Si tu fait : , çà t'affiche simplement 'toto' à l'écran
Si tu fait : Code :
- ECHO toto > resultat.txt
|
, çà crée (ou écrase s'il éxiste) le fichier resultat.txt qui contiendra donc 'toto'.
J'ai fait çà pour 2 raison :
1- M'assurer que le fichier soit vidé avant de mettre les résultats dedans.
2- Mettre une première ligne dans le fichier qui t'indique de quoi il s'agit.
Mais si cette ligne te gène, tu peux commencer par supprimer le fichier pour être certain de ne pas ajouter tes résultats à un fichier qui en contient déjà.
Pour faire propre :
Code :
- IF EXIST resultat.txt del resultat.txt
|
Maintenant, après ce long discours, j'ai une mauvaise nouvelle.
Quand tu fais : Code :
- FOR %%R in (...) do ...
|
tu demande à l'interpréteur de commande d'éxécuter une commande (normal non, pour un interpréteur de commande !).
Le problème c'est qu'une commande DOIT tenir sur une seule ligne. La raison en est que c'est le caractère de fin de ligne (CR_LF) qui marque la fin de la commande.
D'autre part, et c'est là la mauvaise nouvelle, une commande ne peut dépasser une certaine taille. Je n'ai plus la limite en tête, mais 800 * 15 = 168000, c'est TROP !
Donc faut trouver une autre solution.
Par exemple :
Si au lieu de te sortir
chaine1
chaine2
chaine134
chaine116
chaine1BETA
chaine1encore chaine1fiezh
chaine9
ta requête pouvait faire çà :
Code :
- grep -i -l "chaine1 " %1 >> resultat.txt
- grep -i -l "chaine2 " %1 >> resultat.txt
- grep -i -l "chaine134 " %1 >> resultat.txt
- grep -i -l "chaine116 " %1 >> resultat.txt
- grep -i -l "chaine1BETA " %1 >> resultat.txt
- grep -i -l "chaine1encore " %1 >> resultat.txt
- grep -i -l "chaine1fiezh " %1 >> resultat.txt
- grep -i -l "chaine9 " %1 >> resultat.txt
|
Il suffit d'appeler ce fichier search.bat, et le tour est joué ! [edtdd]--Message édité par Mara's dad--[/edtdd] |