Question Débarrassez-vous des sous-dossiers tout en gardant leur contenu?


Sous Windows, existe-t-il un moyen (intégré ou utilisant un programme tiers) de transférer en bloc tous les contenus des sous-dossiers vers le haut? En d'autres termes, un moyen de se débarrasser des sous-dossiers sélectionnés tout en conservant leur contenu? Je voudrais partir de:

Folder
  Subfolder1
    File1
  Subfolder2
    File2

À:

Folder
  File1
  File2

En un seul processus.


4
2017-12-21 02:30


origine


Voir ici aussi superuser.com/questions/496765/ - Matthew Lock


Réponses:


Vous pouvez utiliser une boucle for dans l'invite de commande:

for /r %i in (*) do @move "%i" .

Oui, il essaiera de déplacer les fichiers dans le répertoire en cours, de nouveau dans le répertoire en cours, mais cela ne cause aucun dommage. Assurez-vous de l'exécuter tout en étant situé en haut de la hiérarchie vers laquelle vous souhaitez déplacer les fichiers. L'exécuter depuis un autre endroit aura des effets indésirables.

Si vous souhaitez l'exécuter de manière à ce que vous n'ayez pas besoin de vous trouver dans un répertoire particulier, vous pouvez taper les chemins:

for /r C:\path %i in (*) do @move "%i" "C:\path"

remplacer C:\path avec l'emplacement du répertoire principal vers lequel tous les fichiers seront déplacés. Si vous souhaitez l'exécuter dans un script batch, modifiez les variables pour inclure un autre signe de pourcentage:

for /r C:\path %%i in (*) do @move "%%i" "C:\path"

pour supprimer tous les sous-répertoires vides (à partir de cmd):

for /d %i in (C:\path\*) do @rmdir /s /q "%i"

à partir du lot:

for /d %%i in (C:\path\*) do @rmdir /s /q "%%i"

6
2017-12-21 02:49



Je me suis senti obligé d'éditer votre message car ce que vous proposiez entraînerait une perte de fichier assez désagréable. Tout d'abord, en utilisant delims=? est dangereux car les paramètres par défaut des fenêtres de la console sous Windows utilisent des polices raster qui provoquent l'impression de tous les caractères Unicode qui ne correspondent pas à la page de codes OEM existante. ?. Et vous étiez en train de parcourir sortie ... En utilisant for /f est le mauvais idiome de toute façon ici. for peut itérer les fichiers, récursivement ou les répertoires très bien et il va gérer correctement les noms de fichiers Unicode même avec les polices raster. 600 caractères est une abréviation pour une explication correcte du sujet :-( - Joey
a oublié unicode :( merci cependant. - John T
Au fait, "delims=" est parfaitement acceptable et fonctionne. Vous n'avez pas à trouver un personnage qui est improbable dans la sortie :-) - Joey


Un moyen simple (sous XP) consiste à cliquer avec le bouton droit de la souris sur le dossier racine et à sélectionner Rechercher, puis à ne saisir aucun critère et à appuyer sur Rechercher. Les résultats de la recherche seront une liste aplatie de ce qui se trouve dans le dossier et les sous-dossiers. Vous pouvez alors simplement faire glisser les résultats de la recherche dans un autre dossier et tous les fichiers seront "supprimés" de leurs dossiers.

Dans les versions de Windows après XP, vous pouvez obtenir le même effet en entrant simplement un terme de recherche dans la zone de recherche en haut à droite de la fenêtre de l'explorateur, puis en copiant les résultats dans un autre dossier.


3
2017-12-21 03:45



Cette commande de recherche est-elle une option de clic droit? Et est-ce seulement sous XP et pas dans Vista ou 7? - George MacDonald


Beaucoup de bonnes suggestions jusqu'à présent. Vous pouvez aussi utiliser Tout. Faites un clic droit sur le dossier parent correspondant, "recherche tout". Cela donnera une liste de tous les éléments du dossier. Vous pouvez effectuer les opérations de déplacement à partir d'ici, peut-être après avoir trié par type de fichier ou inclus un type de fichier dans la recherche pour exclure les dossiers.


1
2017-12-21 08:02



"Tout est bon. Les recherches de style "contenu" dans Vista ne sont pas aussi bonnes que la recherche épuisée par nom de fichier. - Matthew Lock


Vous pouvez le faire en utilisant des fichiers de commandes et la commande 'move'.

avoir une lecture de ce fil.


0
2017-12-21 02:45





Tu peux recevoir Commandant Total, qui est un programme de gestion de fichiers shareware, allez dans votre dossier, appuyez sur Ctrl + B (ce qui signifie brancher tous les sous-répertoires - il affichera tous les fichiers de ce répertoire et tous les sous-répertoires), sélectionnez tout et copiez à l'emplacement de votre choix (un dossier plus haut).


0
2017-12-21 07:34