C'est une tâche simple, dans certains cas, mais j'ai des milliers de fichiers dans des centaines de dossiers que je veux déplacer.
La structure de répertoire ressemble à ceci:
C:\Photos\subject\randomnumbers\images\file.ext
Et je veux terminer avec:
C:\Photos\subject\randomnumbers\file.ext
J'ai essayé de courir for /r %i in ("*\images\*.*") do move *\*.*
mais cela ne fonctionne pas comme prévu.
Je ne peux pas penser à une autre façon de le faire que de le faire manuellement. Bien que cela fonctionne manuellement, je bénéficierais grandement d’une opération automatisée que je pourrais lancer au besoin.
C'est possible et quelqu'un peut-il m'aider avec cela?
Réponses:
Cela devrait fonctionner pour vous:
%~pi
extrait le chemin de%i
(finissant avec\
)..
placé après le chemin ci-dessus pointe vers le répertoire parentBien sûr, cela ne gère pas la situation où vous avez des fichiers avec des noms conflictuels dans des sous-répertoires.
la source
%i
dans ma commande originale. Moi aussi je ne penserais jamais à utiliser..
! Merci et merci à tous ceux qui ont répondu! J'espère que ces réponses aideront d'autres personnes ayant des questions semblables OU différentes!Ce n'est pas très sophistiqué, et je suis sûr que les gens proposeront de meilleures solutions, mais voici une solution rapide:
*
commençant par le dossier dans lequel vous souhaitez déplacer les éléments. Cela peut prendre une demi-minute à peu près.Notez que vous pouvez également effectuer l'étape 1 avec des filtres si vous souhaitez uniquement certains types de fichiers, par exemple
*.jpg,*.png
.la source
Voici une solution batch dans laquelle MoveFromDir est le répertoire de départ avec le contenu que vous allez déplacer, et MoveToDir étant le chemin explicite du répertoire. Ce contenu sera déplacé d’un niveau supérieur à MoveFromDir. Vous devez donc les définir variables en conséquence.
Déplacez tous les dossiers et fichiers de MoveFromDir et ceux du dessous vers MoveToDir
Veuillez noter que vous n'exécutez que la deuxième boucle FOR de:
FOR /F "TOKENS=*" %%A IN ('DIR /S /B "%MoveFromDir%\*.jpg"')
Vous pouvez spécifier uniquement les extensions de fichier que vous souhaitez déplacer vers MoveToDir (par exemple, jpg).
Ressources supplémentaires
la source
J'ai trouvé un autre moyen de le faire ... cela prend plus de temps et d'espace disque mais cela vous permet de le faire sans connaître le nom de répertoire de niveau le plus bas. Ainsi, au lieu de devoir connaître le dossier de niveau le plus bas appelé "images", il peut littéralement être n'importe quoi.
Par exemple, j'ai eu un tas de dossiers, disons qu'ils sont nommés 1, 2, 3, 4, 5, etc. et à l'intérieur de tous ces dossiers se trouvaient plusieurs dossiers contenant des fichiers. Je voulais déplacer tous les fichiers d'un dossier racine donné (1, 2, 3, 4, 5, etc.) jusqu'à ce dossier de niveau supérieur (1, 2, 3, 4, 5, etc.). J'ai découvert qu'en utilisant WinRAR, je pouvais compresser tous les dossiers de premier niveau (1, 2, 3, 4, 5, etc.) en utilisant "stocker" pour la compression afin de réduire le temps de traitement. Ensuite, je les ai simplement décompressés en utilisant à nouveau le menu du bouton de clic droit "extraire chaque archive dans un dossier séparé". Avant de décompresser, je devais toutefois "enregistrer les paramètres" dans WinRAR avec le paramètre Extraire -> Menu avancé -> Chemins de fichiers: "Ne pas extraire les chemins" et tous les fichiers zip y étaient décompressés. "
J'ai réussi à le faire avec 2350 dossiers à la fois et cela fonctionne très bien. Maintenant, je l'utilise toutes les semaines ou à peu près.
la source
PowerShell:
Utilisez des caractères génériques pour traiter tous les Randonmnumbers :
la source