Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Systèmes d'exploitation > Windows > MS-DOS > Lecture du tutoriel

Le secret de Dir, ses commandes complémentaires

Avatar
Auteur : Gnogno
Créé : le 08/10/2006 16:46:18
Modifié : le 28/12/2006 12:50:04
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Dans le chapitre suivant, nous allons voir comment gérer des fichiers et des dossiers. Mais, juste avant, je voudrais revenir un instant sur la commande dir, car elle offre de nombreuses possibilités, et permet notamment d'introduire le chapitre suivant.
Voici donc un chapitre dédié entièrement à cette commande, à deux autres commandes qui permettent de faire ce qu'elle ne fait pas et à deux petits trucs en plus :p .

Et je vais d'abord vous en apprendre une bien bonne : dir n'affiche pas vraiment ce qu'il y a dans le dossier courant (le vraiment est important), bah oui.

:o Ah bon ? Mais... pourtant... enfin... bah elle sert à quoi alors cette commande ?


Dir est, en réalité, une commande de recherche :ninja: . En fait, sous Windows, je pourrais dire que dir s'apparente à ceci :
Image utilisateur

Image utilisateur


Bon, c'est pas tout ça, mais faut encore que je vous dise comment elle marche ^^ .
Sommaire du chapitre :
Chapitre précédent Sommaire Chapitre suivant

Un peu de syntaxe

Revoyons un instant la syntaxe de cette commande.

Code : Console
dir /?


Image utilisateur


Citation : Image ci-dessus
DIR [lecteur:] [chemin] [nom_de_fichier] [/A[[:]attributs]] [/B] [/C] [/D] [/L] [/N] [/O[[:]tri]] [/P] [/Q] [/S] [/T[[:]heure]] [/W] [/X] [/4]

Légende : en vert, le nom de la commande ; en orange : le chemin d'accès d'où vous souhaitez lancer la commande (si vous n'en mettez pas, dir le fera dans le dossier courant) ; en rouge : enfin ce qui nous intéresse, ce qui fait que dir est une commande de recherche ; en bleu : les commutateurs possibles pour cette commande.

Comme vous voyez, des commutateurs, il y en a une sacrée masse... avant de parler de cette histoire de recherche, je vais juste d'abord en éliminer quelques uns, histoire que ça soit fait.

Les commutateur /P et /S



Bon, ceux-là, vous les connaissez déjà ^^ .

Les commutateurs /B /C /D /L /Q /W /4



Ces commutateurs sont faciles d'utilisation, vous pouvez expérimenter par vous-même leur(s) effet(s).
(A noter cependant : pour /B : deux dossiers ("." et "..") ne sont pas listés ; pour /D, qui a le même effet que /W : les dossiers sont entre crochets, les fichiers ne le sont pas)

Euh... juste un truc... pourquoi "dir /c" a-t'il le même effet que "dir" tout court ??


Parce que, quand vous entrez dir, Dos met par défaut et sans vous demander votre avis le commutateur /C (c'est l'histoire de la variable d'environnement DIRCMD -voir en bas de l'image-, on en parlera dans la partie suivante). Pour retirer un commutateur, pour qu'il ne fasse pas son effet, mettez juste un moins ("-") devant.
Ce qui donne :
Code : Console
dir /-c

Voilà, voilà ;) .

Les commutateurs /N et /X



Vous vous souvenez qu'il y a plusieurs versions de Dos... et bien, le commutateur /X permet d'afficher une colonne supplémentaire avec les noms des fichiers et dossiers affichés selon une version antérieure... celle où il y avait encore les ~1 !! Vous pouvez donc expérimenter du coup ce que ça donne :) .
Et pour /N... essayez, rien ne change... /N est donc probablement préconfiguré ! Que faut-il donc entrer ? Et oui, vous avez tout compris :
Code : Console
dir /-n


Et là... vous avez le superbe affichage 100% pur premières versions, avec les noms à gauche et le ~1 :D .

Les commutateurs /T et /O



Mis en derniers à cause de leur syntaxe bizarre : [/O[[:]tri]] et [/T[[:]heure]].
Rassurez-vous, pareil, il y aura toujours un slash devant la lettre. Mais, grosse différence : [[:]qqchose]... il s'agit d'un commutateur avec paramètre : la commande fera son boulot, avec plus ou moins de différences suivant le commutateur, mais avec encore des variantes selon le paramètre de ce dernier.
Pour la syntaxe simplifiée, ce serait :
Code : Console
commande /caractereDuCommutateur:paramètre(s)

Les paramètres possibles sont indiqués à côté du commutateur dans la rubrique d'aide.
Quelques exemples :

Code : Console
dir /o:g

Affichera les répertoires avant les fichiers.

Code : Console
dir /o:gn

Affichera les répertoires avant les fichiers puis les mettra en ordre alphabétique.

Code : Console
dir /o:ng

Aura le même effet que
Code : Console
dir /o:n

L'ordre des paramètres a donc une importance...


Vous ne pouvez utiliser le commutateur /t:paramètre que quand vous utilisez le commutateur /o avec comme paramètre D (organisation suivant la chronologie).


Voilà, voilà, on a vu les "quelques uns".

Ah... oui, OK..., il en reste combien maintenant ? Zér0 ?

Non, un ^^ ! Mais il fait déjà partie de la fonction de recherche de dir... je vais donc en parler dans pas longtemps :p .

Une commande de recherche

Dir est donc une commande de recherche... et une commande de recherche sert à... rechercher ! Bien ! Rechercher quoi ? Ce qu'il y a sur votre machine, c'est à dire des fichiers ou des dossiers.
Premier truc hyper-important pour trouver quelque chose : savoir ce que l'on cherche, donc, le nom dudit fichier ou dossier.

Ainsi, pour trouver un fichier ou un dossier dans le dossier courant, il suffira d'entrer :
Code : Console
dir nomDuFichierOuDuDossier


Exemple:
Je cherche à vérifier s'il n'y a pas un certain "fichier.txt" sur le disque C:.
Code : Console
dir fichier.txt

Image utilisateur


:( C'est bizarre... pourtant, j'étais certain qu'il y en avait bien un sur le disque C:...
Vous l'avez deviné, il fallait rajouter le commutateur /s pour qu'il regarde dans tout le disque ^^ , ce qu'on a appris avant est toujours valable.

Code : Console
dir fichier.txt /s


Image utilisateur

Ah, bah le voilà, il se trouvait dans le dossier "fichiers" !


Maintenant, imaginons la situation suivante : vous vous trouvez sur un dossier très loin de la racine du disque, et vous voulez savoir où se trouve un autre fichier, cela depuis la racine du disque... Vous avez donc comme solution ceci:
Code : Console
cd \

dir fichier.extension /s

Mais, imaginons ensuite que vous vouliez revenir sur le dossier où vous étiez avant... beaucoup de "cd" à entrer, n'est-ce-pas ?

Et bien, rassurez-vous, comme l'indique la syntaxe (et c'est le cas pour presque toutes les commandes) vous pouvez aussi entrer avec dir un chemin d'accès.
Code : Console
dir cheminDAcces\fichier.extension (+commutateurs éventuels évidemment)

Et là, dir recherchera le fichier depuis l'endroit spécifié sans que le dossier courant ne soit modifié, faute de cd. Rappel : la racine du disque ("\") est un chemin d'accès comme un autre, un "dir \fichier.extension /s" rechercherait donc un fichier sur tout le disque depuis la racine.

Si vous voulez chercher quelque chose depuis un chemin d'accès, ne mettez pas d'espace entre le chemin d'accès et le nom du fichier : dir afficherait sinon d'abord ce qu'il y a dans le dossier spécifié par le chemin d'accès puis chercherait le fichier dans le dossier courant...
Image utilisateur


Et... mais... est ce que c'est possible de rechercher plusieurs fichiers à la fois ??

Oui, ça l'est ^^ (et c'est d'ailleurs ce que sous-entend l'avertissement ci-dessus). En effet, rien ne vous empêche d'entrer :
Code : Console
dir fichier1 fichier2 fichier3 etc...

Et dir recherchera tous ces fichiers là où vous l'avez spécifié ;) .

Eh ! Mais, attends un peu ! Si on doit séparer les noms de fichier par un espace, comment on fait pour rechercher UN fichier dont le nom contient quelques espaces ?

Bonne question :) ! En effet, si vous entrez :
Code : Console
dir bonjour comment ça va.txt

Dir vous recherchera les fichiers "bonjour", "comment", "ça" et "va.txt" là où vous lui avez demandé, et non pas un seul fichier "bonjour comment ça va.txt".
Et bien, pour qu'il n'y ait pas d'ambiguïté, les guillemets sont obligatoires :
Code : Console
dir "bonjour comment ça va.txt"

Et là, tout marchera comme sur des roulettes ;) .

Et pour rechercher plusieurs fichiers dans plusieurs disques durs ?

Bien :) ! On s'intéresse à tout il semblerait ! Je rappelle que le disque dur est une partie du chemin d'accès comme une autre. Si l'on cherche deux fichiers, par exemple "fichier.txt" et "fichier.bmp" sur les disques C: et D:, rien ne vous empêche d'écrire : Code : Console
dir C:\fichier.txt D:\fichier.txt C:\fichier.bmp D:\fichier.bmp /s


A noter : si j'avais entré la même chose mais sans mettre l'antislash après les disques ("dir C:fichier.txt etc...", dir rechercherait le fichier depuis l'endroit qu'il a mémorisé de ce disque (voir l'histoire du "cd /d d:" et "cd /d d:\" du chapitre 1).


Bon et bien, avant de passer à la suite, il nous reste le dernier commutateur : /a.
Il est relativement simple d'utilisation : dir n'affichera que les fichiers portant le nom spécifié ET le ou les attribut(s) mis en paramètres (attributs possibles : D=Dossiers ; R=En lecture seule ; H=Caché ; A=En archive ; S=Système).
Ainsi, si j'entre :
Code : Console
dir \fichier.txt /s /a:h

Dir recherchera dans tout le disque courant tous les fichiers CACHES de nom fichier, d'extension .txt (mon fichier.txt d'avant ne marcherait donc pas car il n'est pas caché ; réciproquement, si fichier.txt était caché, dir ne le trouverait pas si je ne spécifiais pas "chercher les fichiers cachés"... il est donc nécessaire de spécifier quel(s) type(s) de fichier dir doit chercher).

Code : Console
dir \dossier /a:d /s

Là, dir recherchera dans tout le disque courant tous les dossiers et seulement les dossiers (il exclut les fichiers) de nom dossier.

Et attention, c'est important :
Code : Console
dir fichier /a:

/a: sans rien affichera tous les fichiers ou de dossiers de nom fichier, quels que soient leur(s) attribut(s).<taille valeur="ttpetit"></taille>

:) Ah oui d'accord... on voit soudainement dir sous un autre angle... mais, au fait, pourquoi, quand on entrait "dir" tout seul, il affichait tout ce que contenait le dossier courant ?


Parce que...

Un symbole qui veut tout dire

... dir comprenait qu'il fallait tout afficher, tout simplement :p .

Cette idée de TOUT est contenue sous DOS dans un symbole, que vous connaissez déjà bien : il s'agit de celui-ci : *.

Quand vous entrez donc "dir", Dos comprend automatiquement que vous vouliez dire "dir * ", ce qui veut dire "trouver puis afficher les noms de TOUS les fichiers et dossiers présents là où on m'a demandé de chercher".

* veut donc dire tous les caractères possibles, qu'il y en ait aucun, un, deux... jusqu'à +infini...

:euh: Euh... ouais, mais... quel intérêt d'avoir un signe pareil ?


Et bien, il sert à beaucoup, beaucoup de choses : non seulement il veut dire TOUT, mais, en plus, on peut le mettre où l'on veut.
Exemples:
Code : Console
dir *haha.txt

Recherchera dans le dossier courant les fichiers .txt qui ont pour nom quelque-chose-n'importe-quoi suivi de "haha" puis les affichera.
Code : Console
dir hihi.*

Cette fois-ci recherchera les fichiers ayant pour nom hihi mais ayant n'importe quelle extension.
Code : Console
dir hoho.*t*

Ici, recherchera tous les fichiers ayant pour nom hoho et dont l'extension comporte au moins un "t".
Code : Console
dir *a*.*

Là, recherchera n'importe quel fichier contenant au moins un "a" dans le nom.
Code : Console
dir \* /a:d /s

Et là, dir affichera tous les dossiers contenus dans le disque courant (note : j'aurai pu me dispenser de taper le symbole * , mais c'est toujours plus lisible ;) ) .

Enfin, ce symbole peut-être utilisé dans d'autres commandes que dir (voir chapitre suivant), d'où sa grande importance.

Bon, il ne nous reste plus qu'à voir un symbole avant de passer aux commandes complémentaires de dir.

? : 1 caractère ou 0 caractère

Un autre symbole, presque aussi tordu que * , est celui-ci : ? .

* veut dire TOUT, n'importe quoi, tout ce qui est possible, des combinaisons infinies de 0 à +infini caractère(s).
? veut dire, quand à lui, UN caractère, n'importe lequel, ou Zér0 caractère. En fait, "*" équivaut en quelque sorte à "une infinité de ?".

Pour expliquer, rien de mieux que quelques exemples :

Code : Console
dir c?.txt

Recherchera dans le dossier courant les fichiers .txt dont le nom contiendra UN "c" suivi ou non d'UN SEUL caractère (par exemple : c.txt , ca.txt, c2.txt etc...)

Code : Console
dir ?a?b?c?.?

Recherchera dans le dossier courant les fichiers, ou qui n'ont pas d'extension, ou qui n'ont une extension que d'un caractère. Pour le nom, c'est long à expliquer, voir les exemples :p (exemples : abc, abc.t, tabcr.m, apbnc etc...)

Code : Console
dir ????.???

Recherchera dans le dossier courant les fichiers dont le nom contient de 0 à 4 caractères et dont l'extension contient de 0 à 3 caractères (exemples : la.png, dodo.pm, a, tab.i etc...)

Vous pouvez utiliser les symboles * et ? dans le moteur de recherche de Windows, mais aussi sur les moteurs de recherche sur Internet ! Quoique "*" ait généralement un comportement aléatoire, "?" quant à lui fonctionne bien bizarrement aussi, mais un peu mieux, un exemple?


Voilà voilà, fini pour les symboles bizarres... pour l'instant :ninja: , de toute manière, on aura l'occasion de les utiliser à fond dans le chapitre suivant ;) .

Vocabulaire : ces deux caractères (parmi d'autres) sont dits "caractères génériques"


Bien :) , mais... si j'ai bien compris, dir ne permet pas de rechercher du texte, comment on fait alors ?

Ahlala... dir, c'était bien, mais on a atteint ses limites :'( ... pour chercher du texte nous devrons passer à deux autres commandes qui sont...

Pour chercher du texte dans des fichiers

... find (Trouver, en anglais) et findstr (Find String = trouver chaîne de caractères).

Commençons par find.

Citation : sous l'invite de commande : find /?
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "chaîne" [[lecteur:][chemin]nom_de_fichier[...]]


Légende : en vert, le nom de la commande, en bleu, les commutateurs possibles, en orange, l'endroit de recherche, en rouge, ce qu'il faut rechercher.

Au sujet de la syntaxe : là, vous voyez bien que les commutateurs sont placés AVANT le reste, ça veut dire qu'il faudra impérativement que vous les placiez AVANT le reste quand vous tapez votre commande.


Alors voilà, pour chercher du texte dans UN fichier, il vous suffira d'entrer :
Code : Console
find "texteARechercher" fichierOuSonCheminDAcces


Et pour en rechercher dans plusieurs fichiers, rien ne vous empêche de marquer, comme vous l'indique dans la syntaxe ceci : "[...]" :
Code : Console
find "texteARechercher" fichier1 fichier2 fichier3 etc...


Ah ok... mais... comment on fait pour rechercher du texte dans TOUS les fichiers d'un dossier ? On va tous les taper un par un :'( ?


C'est une solution ^^ , mais il y a plus simple... l'histoire de TOUT, ça ne vous rappelle rien ? * .
Code : Console
find "texteARechercher" *

Recherchera le texte dans TOUS les fichiers du dossier courant ET des sous-dossiers.

:o Ah bon ? Mais... pourquoi ?


Un nom de fichier contient en fait son chemin d'accès (et si je le mets en gros, rouge, gras, souligné c'est que c'est pour le moins important :p ). * voulant dire TOUT, ce symbole veut dire aussi TOUS les chemins d'accès possibles, donc TOUS les fichiers (et à l'occasion leur chemin d'accès) depuis le dossier d'où vous avez lancé la recherche.

Ah... et comment on fait pour éviter ça ?


Et bah, euh :euh: ... c'est à dire que... hmm... :euh: ... enfin... :euh: ... à vrai dire... c'est une excellente question, d'une pertinence pertinente, merci de me l'avoir posée :D (à vrai dire, j'en sais rien, si un moment je trouve, je le rajouterai ici, mais en attendant... et si vous savez, faites passer le message SVP :-° )

1)En général, vous verrez marqué "Accès refusé" pour les sous-dossiers...
2)Si vous vous demandez pourquoi alors avec dir, lorsque l'on recherche avec une astérisque dans le nom, dir ne va pas dans les sous-dossiers, je vous affirme que c'est aussi une excellente question :-° )


Enfin bon, broum broum :-° bref, hum hum, comme (presque) toute commande, find possède ses propres... commutateurs :ange: .

Les commutateurs /V /C /N /OFF[LINE]



Simples d'utilisation, aucune explication supplémentaire n'est nécessaire.
Cependant, /OFF[LINE] est un bel exemple de commutateur présentant plusieurs caractères, ici, les crochets veulent dire que find /OFF a le même effet que find /OFFLINE (je sens que le /OFFLINE sera vite délaisser au profit du /OFF :p ).

Le commutateur /I



Si je l'ai mis à part, ce n'est pas parce qu'il est plus compliqué, c'est juste pour revenir un instant sur l'histoire de "respecter la casse".

Rappel : Dos NE respecte PAS la casse, c'est-à-dire que pour lui, une majuscule=une minuscule.


Find, quant à elle, la respecte, il sera donc nécessaire d'entrer un /i (ou /I, c'est la même chose) pour qu'elle n'en tienne pas compte.
Voilà, c'est revenu un court instant, un petit rappel ne fait jamais de mal ;) .

Euh... ouep... mais y a deux trucs qui me chiffonent... est-ce que l'on peut rechercher plusieurs chaînes de caractère dans un même ensemble de fichiers avec find ou une seule chaîne dans plusieurs dossiers ?


Non ^^ . Et c'est là qu'interviendra findstr.

Findstr est beaucoup plus compliquée que find... mais permet de rechercher plusieurs chaînes de caractère à la fois, et même dans plusieurs dossiers. Comment ? Avec les commutateurs /C: et /D:. Mais pour cela nous allons mettre plusieurs fois le même commutateur et séparer des noms de dossier par des points-virgules :D !
Globalement, findstr fonctionne comme find, on mettra juste /c: devant chaque chaîne... et on rajoutera les dossiers à fouiller après.
Code : Console
findstr /c:"chaîne1" /c:"chaîne 2" etc... /d:dossier1;dossier2;dossier3... *


A noter, lorsqu'il ne s'agit que de mots à chercher, pas d'expressions, on peut retirer les commutateurs /c: et écrire tout simplement :
Code : Console
findstr "mot1 mot2 mot3 ..." /d:dossier1;dossier2;dossier3... *


Voilà, si vous avez compris find, vous avez aussi compris findstr ;) .

Si vous vous sentez délaissés, perdus, en manque d'image, que vous n'avez pas de fichiers sur lesquels tester ces deux commandes, ne vous inquiétez pas, l'exo comblera ce vide ;) .


Et bien, voili, voilou, passons à autre chose :D .

Caractères génériques et nom de dossier, lien entre DOS et C

Allez, comme d'hab, pour finir, quelques petits trucs plus tellement dans le sujet :p .

D'abord, sous Windows, essayez de créer un nouveau dossier de nom "salut ! ça va ?" ... je parie 10 contre un que vous n'y arriverez pas :p .

:o Eh ! C'est vrai ! Il accepte pas le nom ! Comment ça se fait ?


J'imagine qu'il vous affiche ceci ^^ :
Image utilisateur
Ces caractères ne sont pas acceptés dans les noms de fichiers et de dossiers... pour la bonne raison que / est réservé aux commutateurs, \ aux chemins d'accès, : aux disques durs, * et ? sont utilisés pour remplacer des caractères, on ne peut donc pas les mettre et pour les guillemets, vous l'avez vu pour l'histoire de "bonjour comment ça va.txt" ^^ . Pour les autres, on les verra à un moment ou à un autre ;) . Votre dossier "salut ! comment ça va ?" contenant un point d'interrogation, Windows ne peut l'accepter.

Sinon, certains logiciels vous proposent d'enregistrer au format "Tous les Fichiers" (ou "All Files") . A côté, entre parenthèses, vous aurez souvent marqué : "(*.*)" . Cela veut dire que vous devez spécifier et le nom, et l'extension du fichier ; c'est-à-dire que si vous n'en mettez pas, le logiciel n'en mettra pas non plus ^^ .

Quant au lien entre DOS et C, nous le verrons par le biais d'une autre commande : vous savez, quand vous tapez "dir /p" dans un dossier contenant beaucoup de fichier... et bien, j'attire votre attention sur cette ligne qui s'affiche forcément si l'écran se remplit :
Image utilisateur

Et bien, cette ligne peut apparaître idépendamment de dir si vous entrez :
Code : Console
pause

(ça fait pas tilt, les C et Cplusplusseurs ;) ?)
... pour la pause.

Et oui, en C, sous console, les commandes MS-DOS peuvent être utilisées directement par le biais de :

Code : C
1
system("commandeMSDOS");


(d'où l'intérêt d'un "system("pause");" en fin de programme ;) ).

Enfin, quand vous tapez "dir", ces deux lignes s'affichent aussi : Image utilisateur
Code : Console
vol

Vous les affichera de même ;) .

Bien, et bah... voilà pour la parenthèse plus trop dans le sujet... on passe au troisième bilan.

Bilan

En route :pirate: ! Dans ce chapitre nous avons vu comment :

Commande dir



Commandes find et findstr



Pour les commutateurs, je vous conseille d'apprendre /c /n et /i pour find et /i, /d: et (évidemment :D ) /c: pour findstr.


Symboles



Pour les autodidactes, petite mise en voie : vous pouvez combiner les deux symboles (* et ?) avec n'importe quelle commande et chaine de caractère... enfin, personnellement, je vous conseille de voir quand même les sous-parties qui s'y réfèrent ;) .


Autres trucs



Bon, place à l'exo :) .

Exercice

Pour les exos, vous allez enfin avoir quelque chose de vraiment concret ^^ .
Tout d'abord, téléchargez ceci. Il s'agit d'un fichier zip. Dézippez-le sur la racine.

:o Sur la racine ? Pourquoi ?

Enfin... pas forcément la racine, mais pas trop loin non plus... pourquoi ? Parce que ce fichier zip contient tout ce qui est nécessaire pour l'exo c'est à dire toute une arborescence de dossier allant très loin... si vous le mettez déjà loin dans le disque, le nombre de caractères pour le chemin d'accès étant limité, vous arriverez aux limites et n'arriverez pas à le dézipper, tout simplement ^^ .

Et oui... tout a une limite : vous pouvez essayer : amusez vous à faire des sous-dossiers de sous-dossiers de sous-dossiers etc... en donnant un long nom aux dossiers à chaque fois, et, au bout d'un moment Windows vous affichera un message d'erreur et ne pourra pas aller plus loin... .


Bref, voici votre mission, que vous acceptez bien évidemment ^^ (les secrets indiquent la solution et la manière d'y arriver):
  • 1)Sous l'invite de commande, rendez-vous dans "dossiers" (la racine de l'arborescence que vous venez de télécharger)
  • 2)Avec un "dir /s", regardez un peu ce que ça donne
  • 3)Zér0, tu constates que dir signale plus de 200 dossiers. Tu n'es pas dupe, tu sais que dir compte aussi tous les dossiers intermédiaires. Il te faudra trouver le vrai nombre de dossiers présents. Pour cela, j'ai placé dans chacun des dossiers un fichier d'extension .marqueur, dont j'ai malheureusement perdu le nom... ces fichiers peuvent aussi être cachés, mais pas toujours... en trouvant le nombre de fichiers .marqueur, tu auras le nombre de dossiers ;) .
    Secret (cliquez pour afficher)

    Code : Console
    dir *.marqueur /s (34 marqueurs)
    
    dir *.marqueur /A:h /s (37 marqueurs)

    OU
    Code : Console
    dir *.marqueur /a: /s

    ça fait 71

  • 4)Maintenant que vous connaissez le nombre de dossiers, il vous faudra en cibler quelques-uns... certains sont à supprimer (on les supprimera dans le chapitre suivant). Un dossier est à supprimer si deux conditions sont remplies:
    -il contient un fichier système contenant au moins un a dans le nom
    -il contient un fichier marqueur dont le premier mot est "bonjour"(en minuscules) ; il vous faudra aller dans chaque dossier et utiliser "find" et le commutateur /N (findstr est trop complexe pour ceci)

    Il y a 3 dossiers à supprimer. Quels sont-ils ?
    Secret (cliquez pour afficher)

    yo, paf et yipee
    D'abord, trouver ces fichiers système contenant un a dans le nom :
    Code : Console
    dir *a* /a:s /s

    Il y en a 4, donc il faut trouver le fichier marqueur ne commençant pas par "bonjour" en allant dans chacun des dossiers puis en entrant :
    Code : Console
    find "bonjour" *.marqueur /n

    tous les fichiers .marqueur commencent par bonjour... mais un seul a ce bonjour en ligne 2, il s'agit de celui de vilain ! On ne peut donc pas l'accuser, il est innocent, ou en tout cas acquitté ^^ .

  • 5)Trouve ensuite les chemins d'accès de ces dossiers et fichiers :
    -le sous-dossier rayman (il n'est ni caché ni quoi que ce soit de spécial)Secret (cliquez pour afficher)
    Code : Console
    dir rayman /s

    -tous les fichiers et dossiers ayant un rapport avec "noël" (2 dossiers, 3 fichiers)Secret (cliquez pour afficher)
    Code : Console
    dir *noël* /a: /s

    -enfin, affiche à l'écran tous les fichiers (contenus uniquement dans la racine "dossiers") dont le nom contient 5 caractères ou moins.
    Secret (cliquez pour afficher)
    Code : Console
    dir  ?????.* /a:

  • 6)Pour finir, on s'entraîne à la recherche de texte. Allez d'abord dans "fables", puis recherchez ces informations:
    -à quelles lignes apparaît le mot corbeau dans "Le Corbeau et le Renard" (fichier fable.txt), attention, il apparaît au moins une fois avec une majuscule...
    Secret (cliquez pour afficher)
    Code : Console
    find "corbeau" fable.txt /i /n

    -combien de fois apparaît le mot "renard" dans la même fableSecret (cliquez pour afficher)
    Code : Console
    find "renard" fable.txt /i /c

    -les endroits, dans l'ensemble des fables, où apparaissent les mots : "corbeau", "renard", "agneau", "cigogne", "loup", "aigle"
    Secret (cliquez pour afficher)
    Code : Console
    findstr /i "corbeau renard agneau cigogne loup aigle" *

    D'après la syntaxe, les commutateurs sont à placer avant le reste...


    -combien de fois apparaîssent les chaînes "Jean de la Fontaine" et "et" dans ce groupement de fables
    Secret (cliquez pour afficher)
    Code : Console
    findstr /i /c:"Jean de la Fontaine" /c:" et " /c:" et," *

    Astuce : pour rechercher un mot, n'oubliez pas de mettre un espace au début et à la fin... "et" se trouve dans d'autres mots comme "effet" "bonnet" "etc" etc... . Avec le " et," je m'assure aussi que les "et" suivis d'une virgule seront trouvés... par contre, avec cette méthode, les "et" en début de phrase ainsi que ceux devant une autre ponctutation ne passeront pas... la solution que je vous propose n'est donc pas idéale, mais elle se rapproche pas mal de ce qu'il faudrait ^^ .

    -enfin, revenez sur le dossier parent et trouvez la commande ayant le même effet que celle juste ci-dessus
    Secret (cliquez pour afficher)
    Code : Console
    findstr /i /c:"Jean de la Fontaine" /c:" et " /c:" et," /d:fables *


Ne supprimez pas cette arborescence à la fin, nous en aurons besoin dans le chapitre suivant ;) .



Ouf ^^ ! Pour le qcm, vu que je n'avais pas d'idée de question après le bilan et cet exo, on va travailler un peu les caractères génériques... en 4 questions où il faut surtout ne pas s'embrouiller ^^ .

Q.C.M.

Quel serait l'effet précis d'un
Code : Console
dir *a*b*c*d??nop*.*
Parmi les fichiers suivants, se trouvant tous dans le dossier courant, n'étant pas caché ni système etc... (pas de piège :p ), lequel ne sera pas trouvé avec un
Code : Console
dir ????.????????
(le même énoncé que ci-dessus :p )Code : Console
dir *a???b*.?
(toujours le même énoncé :p ) Code : Console
dir *g?n*.txt*


Voilà donc dir sous sa parfaite splendeur... impressionant, non ^^ ?
Prochain chapitre : la gestion de fichiers et de dossiers, où l'on va bien utiliser à fond les deux caractères génériques qu'on a vu... ça commence à devenir vraiment intéressant :p .
Chapitre précédent Sommaire Chapitre suivant
Auteur : Gnogno
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 639 Zéros connectés | Requêtes SQL 10 requêtes | Temps de génération de la page : Total (SQL) 0.099s (0.0809s)