2017-09-12 1 views
1

Commençons par expliquer ce que je veux faire.Renommer les fichiers dans un dossier de manière conditionnelle avec le fichier batch

J'ai un dossier avec des photos d'un appareil photo. Ils sont nommés comme ceci: DSC_0030.jpg DSC_0030 (2) .jpg DSC_0031.jpg DSC_0030 (2) .jpg et ainsi de suite.

Ceci est très ennuyeux quand j'essaie de les parcourir car ceux avec le (2) proviennent d'une autre carte mémoire et sont pris à une date ultérieure.

Le tri par date ne semble pas fonctionner non plus. Les photos ne proviennent pas de ma propre caméra, je ne peux donc pas les réimporter dans des dossiers différents.

Donc, mon idée est un fichier de commandes quelque chose comme ça, je ne connais pas les syntaxes.

foreach(file in "folderpath") { 
    if (instr(file.name, "(2)")) { 
     file.name = "2 " + file.name; 
    } else { 
     file.name = "1 " + file.name; 
    } 
} 

Répondre

0

pas testé

@echo off 
::: set the correct path ::: 
set "photos=c:\photos" 

setlocal enableDelayedExpansion 
for %%a in ("%photos%\*(?).???") do (
    set "filename=%%~na" 
    set "wb=!filename:~0,-3!" 
    set "number=!filename:~-2,-1!" 

    rem :::: remove echo word if file name looks ok ::: 
    echo ren "%%~fa" "!number!-!wb!%%~xa" 

) 
+0

Merci! J'ai travaillé des merveilles et j'ai appris quelque chose de nouveau! – KaniJonas