déplacement par lots pour différents types de fichiers vers différents noms de dossiers

0

J'ai des fichiers contenant dans

C: \ foldername1 \ Files \ soandso1.mkv C: \ foldername2 \ Files \ soandso2.mp4 C: \ foldername3 \ Files \ soandso3.avi

Je souhaite déplacer les fichiers .mkv, .mp4 et .avi dans son dossier parent, nom_dossier1, 2, 3.

Le nom de pliage sera différent pour chaque fichier soandso. Essentiellement, je veux me débarrasser du dossier "Fichiers" et placer les fichiers multimédias dans les noms de pli1, 2 et 3.

Existe-t-il une commande batch pour cela?

Roger
la source
Donc, foldername1 \ Files ne contient que des MKV, foldername2 \ Files a seulement des MP4 et foldername3 \ Files a seulement des AVI?
Karan
Non, ça pourrait être aléatoire. "Nomdossier" peut aller jusqu'à "Nomdossier50" qui contient un dossier "Fichiers". À l'intérieur de "Fichiers" contient un fichier .mkv, .avi ou .mp4.
Roger
En outre, ce serait bien si je pouvais inclure une commande qui supprime le dossier "Fichiers" après le déplacement.
Roger
Puisque cela semble être une affaire unique, une raison pour laquelle une simple recherche + tri par extension + couper / coller ne fera pas? Aussi, quelle version de Windows?
Karan
parce qu'il y a plusieurs "nom de pliage", ce qui signifie que je dois entrer dans chacun d'eux, aller dans "Fichiers", le copier-coller dans le "nom de pli" parent? Existe-t-il une technique de tri et de collage que je ne connais pas? Je suis assez nouveau pour ce genre de choses.
Roger

Réponses:

1

Quelque chose que j'ai mis en place rapidement; pas le temps de tester intensivement maintenant:

@echo off
for /f "delims=" %%d in ('dir /b/ad-s-h') do (
    if exist "%%d\Files" (
        pushd "%%d\Files"
        if exist *.avi move *.avi ..
        if exist *.mkv move *.mkv ..
        if exist *.mp4 move *.mp4 ..
        popd
        rd "%%d\Files"
    )
)

Si vous l’exécutez dans C: \, il examinera chaque dossier de niveau supérieur du lecteur et s’il contient un sous-dossier Files , il déplacera tous les fichiers AVI / MKV / MP4 trouvés jusqu’au niveau précédent (c’est-à-dire vers le haut). niveau-dossier), puis supprimez le sous-dossier Files .

Si d'autres fichiers existent dans Fichiers, le dossier ne sera pas supprimé. Vous pouvez utiliser rd /s /qsi vous voulez supprimer de force. De plus, déplacer vous invitera à chaque fois à écraser les doublons (le cas échéant), ce qui peut être fait automatiquement en utilisant move /y.

Karan
la source
J'utilise Windows 7, comment puis-je exécuter cette commande?
Roger
Copiez et collez dans le Bloc-notes, enregistrez-le sous le nom "D: \ Test.bat" (avec les guillemets!), Puis ouvrez une fenêtre d'invite de commande, accédez à C: \, D: \ ou au lecteur sur lequel vous souhaitez l'exécuter. et le type D:\Test.bat. Je vous conseille de copier quelques dossiers sur un autre lecteur et de tester le fichier de commandes dessus avant de le lâcher sur l'ensemble de votre collection (bien qu'il ne supprime aucun fichier s'il est enregistré comme indiqué ci-dessus).
Karan
Hou la la! Testé et ça marche. Merci Karan! Vous venez de me sauver des heures de travail avec ça.
Roger
Hmm ... l'exécution sur le disque avec le support n'a pas été complète. Certains fichiers ne se sont pas déplacés et certains dossiers "Fichiers" n'ont pas été supprimés. Peut-être que le lot était trop volumineux pour exécuter toutes les commandes, mais la plupart du travail était fait.
Roger
Des erreurs affichées? Est-ce que move s'est arrêté et vous a demandé d'écraser des fichiers portant le même nom? En outre, avez-vous vérifié les dossiers de fichiers restants - quels fichiers étaient encore présents?
Karan