Supprimer des dossiers de langue sans toucher au reste

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Depuis une fenêtre de cmd.exe, je souhaiterais supprimer une pléthore de sous-dossiers de langue, sans toucher aux autres sous-dossiers et fichiers présents dans le dossier en cours.

Concrètement, j'ai un dossier "Boot" contenant des sous-dossiers divers, dont un bon nombre sont des dossiers de langue ayant un nom sous la forme classique "az-AZ" (où az est une chaîne de 2 caractères alphabéthiques). Or, je veux supprimer tous les dossiers de langue (excepté celui nommé "fr-FR") sans toucher aux fichiers et autres dossiers présents.

Par exemple, si le dossier contenait :

  • .\en-US
  • .\en-AU
  • .\fr-FR
  • .\fr-BE
  • .\fr-CA
  • .\data
  • .\plugins
  • settings.txt
  • exec.exe
  • content.dll

Je voudrais ne laisser que :

  • .\fr-FR
  • .\data
  • .\plugins
  • settings.txt
  • exec.exe
  • content.dll

Je peux faire une sauvegarde du dossier "fr-FR" via la commande "move", ça n'est pas un problème. Là où je bute, c'est dans l'élaboration de la boucle FOR permettant de restreindre ma suppression aux dossiers de langue uniquement.

J'ai toujours eu du mal à comprendre la syntaxe de FOR. Avez-vous des idées ? Merci d'avance.

Bien le bonjour tous ! :)

+0 -0

Cette réponse a aidé l'auteur du sujet

Salut.

Un petit truc de ce style devrait faire l'affaire (il faut te placer dans le répertoire de base) :

1
2
3
4
5
for /D %%r in ("??-??") do (
  if not %%r==fr-FR (
    echo  Removing %%r
  )
)

Le "/D" spécifie que tu veux lister les répertoires Le filtre "??-??" permet de ne lister que les dossier du style xx-XX Enfin le petit "if" permet de vérifier que l'on ne supprime pas le dossier "fr-FR"

Il faut bien entendu remplacer le "echo" par un petit "rmdir /s /q %%r"

Édité par Xaviou

+0 -0
Auteur du sujet

Merci beaucoup pour cette réponse super-rapide ! :)

Le souci, c'est que ça me donne le message d'erreur suivant :

%%r était inattendu

Je ne m'attendais pas à ce que CMD ne s'y attende pas. :-°

Bien le bonjour tous ! :)

+0 -0
Auteur du sujet

Oui, j'avais vu la coquille entre temps, mais ça ne change rien une fois corrigé. Pour simplifier, j'ai fais ceci :

1
2
rename fr-FR backupfr
for /D %%r in ("??-??") do (rmdir /s /q %%r)

Et ça me renvoie la même erreur (%%r était inattendu). :(

Bien le bonjour tous ! :)

+0 -0

Cette réponse a aidé l'auteur du sujet

C'est étonnant.

J'ai d'abord pensé que ça venait du fait que tu avais tout mis sur la même ligne, mais je viens de re-tester avec un simple copier/coller et ça marche chez moi.

Tu es sous quel version de Windows ?

Edit : Je viens de refaire un test suite à une illumination soudaine d'un de mes deux neuronnes.

J'ai remplacé le premier "%%r" par "%r" (un seul %) et j'obtiens ...... "%r) était inattendu" ....

Je pense que c'est une piste…

Édité par Xaviou

+0 -0
Auteur du sujet

Merci !

J'ai testé en faisant le contraire et ça fonctionne : j'ai remplacé %%r par %r et la commande s'applique sans souci.

Je suis sous Windows 8.1 x64.

Bien le bonjour tous ! :)

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte