script de fichier batch Windows pour copier chaque dixième fichier d’un dossier dans un autre dossier

J’ai de nombreux fichiers texte dans un répertoire et je souhaite sélectionner tous les dixièmes fichiers (fichiers 10, 20, 30, 40, etc.) en fonction du nom / de la disposition alphabétique des fichiers et les copier dans un autre dossier.

Par exemple:

J’ai un dossier C: \ documents \ source \ qui contient les fichiers:

12.txt 16.txt 2007.txt 2008.txt 200865.txt 2008616263.txt a.txt across.txt addition.txt album.txt American.txt an.txt and.txt April.txt article.txt Artist.txt at.txt Award.txt Awards.txt Awards64.txt Bad.txt Best.txt breakout.txt by.txt Canada.txt categories.txt Collaboration59.txt Dance.txt Dark.txt December.txt Diva.txt Duo.txt earned.txt embarked.txt Entertainment.txt entitled.txt Europe60.txt Favorite.txt Female.txt Fiasco.txt first.txt five.txt for.txt four.txt Girl.txt Glow.txt Gone.txt Good.txt Grammy.txt Group.txt he.txt headlining.txt her.txt in.txt including.txt Kanye.txt kicked.txt Lupe.txt Margeaux.txt Monster.txt MTV.txt Music.txt NERD.txt nominated.txt nominations.txt of.txt off.txt on.txt or.txt other.txt Performance.txt PopRock.txt R&B.txt RapSung.txt receiving.txt Record.txt Recording.txt referred.txt Rihanna.txt second.txt September.txt several.txt she.txt shows.txt Single.txt Song.txt SoulR&B.txt States.txt success.txt support.txt the.txt then.txt to.txt tour.txt United.txt Video.txt was.txt Watson.txt Weekly.txt West.txt which.txt winning.txt with.txt won.txt wrote.txt Year.txt Year58.txt 

Je veux copier les fichiers album.txt, Awards64.txt, December.txt, Fiasco.txt, Group.txt, Monster.txt, other.txt, second.txt, support.txt et West.txt dans le dossier C: \ documents \ sortie \

Comment puis-je écrire un fichier de commandes qui peut atteindre cet objective?

Il suffit de compter en parcourant la liste des fichiers:

 @echo off set Counter=0 for %%f in (*.txt) do call :p "%%f" goto :eof :p set /a Counter+=1 set /a X=Counter %% 10 if %X%==0 copy %1 C:\Documents\Output goto :eof 

Devrait fonctionner, mais ne peut pas tester, car (à juste titre) je n’ai pas les permissions pour écrire dans le répertoire racine 😉

Pour vous adapter à chaque huitième fichier, modifiez simplement le 10 dans le set /a X=Counter %% 10 .

Notez cependant que lorsque les listes de fichiers NTFS sont sortingées, il ne s’agit pas du même sorting que celui obtenu avec Explorer (ou de toute autre méthode qui respecte la méthode de sorting définie dans les options régionales et linguistiques).

Pouvez-vous changer les noms de fichiers? La solution facile serait de marquer chaque 10ème fichier en fonction de ce que votre sortie fait pour les créer. Copiez-les ensuite avec des caractères génériques et votre marqueur.

ajout de quelques modifications pour faire quelques disques à partir d’un seul dossier: Dirty, mais ça marche :). Pour chaque disque “off”, les dossiers var et target doivent être modifiés. Autre comme dans le script original

 @echo off set Counter=0 set offs=0 for %%f in (*.mp3) do call :p "%%f" goto :eof :p set /a c2=Counter-offs set /a X=c2 %% 8 set /a Counter+=1 if %X%==0 copy %1 d:\avtcd_tgt\cd1 goto :eof