Mettre attribut à un dossier pas au contenu

Résolu/Fermé
loladen - 12 déc. 2009 à 23:52
 loladen - 13 déc. 2009 à 12:32
Bonsoir,

Je souhaiterais savoir s'il existe une commande sous la console Windows cmd.exe pour appliquer un attribut aux dossiers d'un dossier, mais pas au contenu de ces dossiers.

Par exemple :

MERE
---DOSSIER1
------fichier1.txt
---DOSSIER2
------fichierbanane.rar
---Setup.exe

Ici, je veux attribuer l'attribut caché à DOSSIER1, DOSSIER2 et Setup.exe, mais PAS à fichier1.txt et fichierbanane.rar.

Dans le cmd, je me positionne donc dans le dossier MERE et je rentre

ATTRIB +H +S \D \S

Mais le problème, c'est que les fichiers fichier1.txt et fichierbanane.rar ont été cachés, alors que je veux qu'uniquement les dossiers DOSSIER1 et DOSSIER2 le soient (comme dans Bouton Droit --> Propriétés --> ... --> N'appliquer les modifications qu'à ce dossier).

Je ne sais pas si je suis assez claire, mais je voudrais connaitre une syntaxe permettant cela.

Merci d'avance

1 réponse

Profil bloqué
13 déc. 2009 à 04:26
Bonsoir, les options de la commande Attrib sont /S et /D au lieu de \S et \D. Mais peu importe : "Attrib /?" nous indique que l'option /D traite aussi les dossiers, elle n'indique pas que cela exclut les fichiers, contrairement à ce que vous semblez croire. Autrement dit, on ne peut pas traiter les dossiers seuls directement. Pour obtenir le résultat souhaité, il faudrait faire, à mon avis :

ATTRIB +H /D /S *.* : va cacher tout, c'est à dire les dossiers et les fichiers.
ATTRIB -H /S *.* : pour révéler à nouveau tous les fichiers.
ATTRIB +H *.* : pour cacher à nouveau les fichiers du répertoire sous le quel on se trouve.

Ainsi seuls les dossiers demeurent cachés, ainsi que les fichiers du répertoire courant.

Il ne me semble pas nécessaire d'utiliser l'attribut system (+S)

Cordialement,
0
Merci d'avoir répondu.

Votre solution fonctionne très bien, mais le problème est l'utilisation du ATTRIB +H /D /S *.* : en effet, je l'utilise à travers la commande system("xxx") en C, que j'exécute sur un serveur et le traitement dure pendant plusieurs heures... Je vais donc me tourner vers des bibliothèques en C qui gèrent cela.

En tout cas, en local, ça marche !

Encore merci !

Cordialement.
0