Déplacez les fichiers de plusieurs dossiers dans le répertoire parent avec l'invite de commande

8

J'ai plusieurs fichiers .rar dans plusieurs dossiers comme celui-ci:

C:\Docs\Folder1\rarfile1-1.rar
C:\Docs\Folder1\rarfile1-2.rar
C:\Docs\Folder1\rarfile1-3.rar  

C:\Docs\Folder2\rarfile2-1.rar
C:\Docs\Folder2\rarfile2-2.rar
C:\Docs\Folder2\rarfile2-3.rar  

C:\Docs\Folder3\rarfile3-1.rar
C:\Docs\Folder3\rarfile3-2.rar
C:\Docs\Folder3\rarfile3-3.rar  

Je souhaite déplacer tous les fichiers .rar vers le répertoire parent «C: \ Docs». J'ai beaucoup plus de 3 dossiers, donc je pensais faire un fichier batch ou quelque chose. Quelles seraient les commandes pour ce faire?
Merci

pseudo
la source
J'ai cherché un problème similaire et j'ai trouvé cette réponse utile.
lalthomas

Réponses:

15

Je viens de créer une application en ligne de commande qui fait exactement cela (plus affiche des statistiques) et j'ai cherché à voir si quelqu'un essayait de le faire afin que je puisse le partager et éviter à quelqu'un d'avoir à le comprendre.

C'était très amusant d'écrire. Nécessite .NET 3.5, fonctionne à partir de la ligne de commande, appelez avec -h ou aucun paramètre pour l'utilisation.

MoveFilesUpFromSubfolders
(code source)

Commentaires un plus! :)

Oh, et capture d'écran de son apparence:

                               

Camilo Martin
la source
3
+1 Écrire un programme pour résoudre le problème de quelqu'un. Voilà l'engagement!
Li-aung Yip
1
@ Li-aungYip Merci beaucoup pour le compliment! De plus, en raison de circonstances, je n'ai plus le disque dur sur lequel j'avais l'habitude de coder au moment où je l'ai fait (après avoir perdu cela et bien d'autres choses), donc je suis très heureux de le voir ici et de le télécharger maintenant ( bravo à Mediafire pour l'avoir stocké si longtemps avec quelques téléchargements, et j'ai de la chance de ne pas l'avoir stocké dans Megaupload!). Donc, si vous le mettez en perspective, plus vous en donnez plus vous en recevez :)
Camilo Martin
Bon travail! +1 et 50 rep. Je sais que cela a 4,5 ans, mais cela m'a été très utile car j'ai téléchargé plus de 90 fichiers qui se trouvaient dans plus de 90 dossiers. Cela m'a aidé à mettre tous les fichiers dans son dossier parent.
La seule critique que j'ai, c'est que lorsque j'ai essayé de l'utiliser, une erreur sur un problème avec le dossier n'arrêtait pas, et elle n'a pas expliqué pourquoi. Ce n'est qu'en utilisant la commande -t que j'ai pu déterminer pourquoi il y avait un problème avec le dossier (car il était nommé avec plus de 250 caractères). Ceci est facilement contourné en mettant en surbrillance tous les dossiers et en renommant l'un d'entre eux (alors le reste sera ajouté avec un numéro).
@ edmastermind29 Je suis super content de savoir qu'un tel ancien code a toujours été utile à quelqu'un. Croyez-le ou non, les archives du code source ont été retirées de Mediafire pour avoir été marquées automatiquement comme violation du droit d'auteur (ce qui est assez absurde, étant donné qu'il n'y a pas de vidéo ou d'audio mais juste du texte), et je ne sais pas comment j'ai fait cela . Si c'est utile, à ce stade, j'écrirais un bash one-liner pour faire face à un problème comme celui-ci, quelque chose comme mv dir/sub/* dir; rmdir dir/subdans une boucle.
Camilo Martin
7

Essayez ceci:

for /d %f in (docs\*) do (
pushd %f
move .\*.* ..
popd
)
BillP3rd
la source
Pouvez-vous expliquer cela un peu plus?
Nick
@Nick: pour tous les dossiers de docs, entrez dossier. Déplacez tous les fichiers du dossier actuel vers le dossier parent. Revenez au dossier parent.
Hello71
Le pushdet popdn'est pas vraiment nécessaire. cdfonctionnerait très bien.
Hello71
Comme expliqué par Hello71. Aussi, pourrait être fait avec une seule ligne:for /d %f in (docs\\*) do move %f\\*.* docs
BillP3rd
1
NB. Ni l'original ci-dessus ni le one-liner ne traiteront correctement les noms de fichiers en double.
BillP3rd
5

Eh bien, la réponse à votre question est très simple. Ce n'est pas un script mais ça fera l'affaire.

J'ai supposé que vous exécutez Windows.

  • Se placer dans le répertoire C: \ Docs
  • Appuyez sur F3 (recherche)
  • Recherchez * .rar
  • Appuyez sur Crtl + A
  • Appuyez sur Ctrl + X
  • Fermez la fenêtre de recherche et passez à nouveau à C: \ Dosc dans l'explorateur
  • Collez les fichiers coupés en appuyant sur CTRL + V.
integratorIT
la source
+1 pour une solution de contournement agréable et simple sans tiers ni scripts.
Syakur Rahman
+ 1 méthode la meilleure et la plus rapide A +++
Sickest
3

L'aspiration a fonctionné pour moi sur cette question.

Suction est une application gratuite et portable qui vous aidera à trier les dossiers en désordre en un rien de temps.

L'aspiration fonctionne en consolidant les répertoires parents. Par exemple, si votre répertoire d'images est plein de dossiers inutiles, faites glisser le dossier dans l'interface Suction, et il supprimera les dossiers, vous laissant juste avec les fichiers. Ceci est également utile pour les personnes qui téléchargent beaucoup de choses.

Raystafarian
la source
0

Cela devrait fonctionner:

move C:\Docs\*\* C:\Docs
Bonjour71
la source
2
J'obtiens l'erreur: le nom de fichier, le nom du répertoire ou la syntaxe de l'étiquette de volume est incorrect.
Nick
Le ** n'a pas fonctionné
Nick
Vous devez vous assurer que vous mettez le `\` dedans, et qu'il n'est pas échappé par votre éditeur de texte.
Hello71
L'émission de cette commande à partir d'une invite CMD (sous Windows 7) génère l'erreur notée par Nick.
BillP3rd
Ça ne marchera pas. * ne fonctionne pas correctement pour les dossiers. Je dois sortir des programmes tiers comme Total Commander.
surfasb
0

Exemples de copie ou de déplacement de fichiers de sous-répertoires vers un seul répertoire

pour / f "tokens = *"% a dans ('dir "C: \ Temp \ Epub * .epub" / s / b') copiez / y "% a" C: \ Temp \ epub.

pour / f "tokens = *"% a in ('dir "C: \ Temp \ Epub * .epub" / s / b') déplacez / y "% a" C: \ Temp \ epub

le "tokens = * est pour capturer des chemins avec des caractères spéciaux

user340812
la source