2017-09-19 23 views
0

J'espère ne pas confondre quelqu'un avec ce titre, je ne peux pas décrire correctement mon problème dans une ligne courte ... J'ai un dossier avec plusieurs fichiers (tous ont la même extension) et je veux les renommer tous numériques. Cela devrait être facile car le fichier batch devrait compter chaque fois qu'il remplace un nom. Mais je peux me tromper. Je ne sais pas grand-chose sur le lot en dehors de quelques notions de base, mais je suis toujours heureux d'en savoir plus.Batch: renommer les fichiers numériques (compter à chaque fois)

Merci d'avance pour toute réponse!

+0

Avez-vous essayé de le faire par vous-même? Si oui, partagez-le ici. – sohaib

+0

@ S.Ahmad Oui, mais je ne suis pas allé très loin. En fait, j'ai réussi à écrire environ 5 lignes avant que je remarque que j'ai besoin de dire au groupe de compter et je ne sais pas comment faire et toutes les autres solutions sur internet me paraissent bien trop compliquées. – Puntherline

Répondre

2

Il sera plus simple de créer un dossier vide, de déplacer les fichiers dans le nouveau dossier tout en les renommant, puis de les replacer dans l'ancien. De cette façon, vous n'aurez plus aucun problème à renommer les fichiers existants ou à parcourir les fichiers que vous avez déjà renommés.

Ma solution originale:

@echo off 
setlocal enabledelayedexpansion 
set folder=C:\path\to\existing\folder 
md %folder%.TEMP 
set /a n = 0 
for %%f in ("%folder%\*") do (
    set /a n += 1 
    move "%%f" "%newfolder%\!n!%%~xf" 
) 
move "%folder%.TEMP\*" "%folder%" 
rd %folder%.TEMP 

Mise à jour avec @ commentaires de Compo, la numérotation des fichiers avec des zéros non significatifs dans l'ordre chronologique créé (changement/TC/TW utiliser la dernière date de modification à la place):

@echo off 
setlocal enabledelayedexpansion 
set folder=C:\path\to\existing\folder 
md %folder%.TEMP 
set /a n = 0 
for /f "delims=" %%f in ('dir/b/a-d-s-l/od/tc "%folder%"') do (
    set /a n += 1 
    set zn=0000000!n! 
    set zn=!zn:~-8! 
    move "%%f" "%newfolder%\!zn!%%~xf" 
) 
move "%folder%.TEMP\*" "%folder%" 
rd %folder%.TEMP 
+1

Je suggère de rembourrer avec des zéros classés par dates et heures de sorte qu'ils puissent encore être triés. _Est-ce que le déplacement des fichiers changera l'horodatage original? _ – Compo

+0

@Compo - padding ajouté. – DodgyCodeException

+0

Je pense toujours que votre numérotation doit être basée sur les horodatages écrits, '\ TW' ou créés,' \ TC' existants. 'Pour/F" Delims = "%% f In ('Dir/B/A-D-S/L/OD/TC"% dossier% "') Do (' – Compo