2017-02-07 3 views
-1

У меня есть несколько файлов * .jpg, расположенных в папках в основной корневой папке. Я получаю простой пакетный файл, который переименует все файлы в его имя. Например:Пакетный файл для переименования имен файлов из нескольких каталогов

Orphan 
---Gambia 
------GAM001 
---------G123.jpg 
---------G456.jpg 
---------GX12.jpg 
------GAM002 
---------G789.jpg 
---------G012.jpg 
---------G112.jpg 

И я хотел бы, чтобы выглядеть следующим образом:

Orphan 
---Gambia 
------GAM001 
---------GAM001.jpg 
---------GAM001 (1).jpg 
---------GAM001 (2).jpg 
------GAM002 
---------GAM002.jpg 
---------GAM002 (1).jpg 
---------GAM002 (2).jpg 

Так я после того, как пакетный файл, который можно запустить из папки Main Root.

Извините заранее, поскольку я новичок во всем этом, и я подумал, что я дам ему войти в то, что я нахожу очень интересным!

Заранее спасибо

+0

Вы хотите, чтобы мы написали код для вас? или у вас уже есть код, чтобы показать нам, и у вас есть проблемы, о которых вы хотите задать вопросы? – abelenky

+0

*** Показать свой код *** – abelenky

ответ

2
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir\orphan" 
FOR /d /r "%sourcedir%" %%a IN (*) DO (
PUSHD "%%a" 
FOR /f "delims=" %%f IN (
    'dir /b /a-d /o-n "%%~nxa*.jpg" 2^>nul' 
) DO REN "%%f" "%%f.jpg" 
SET /a count=0 
FOR /f "delims=" %%f IN (
    'dir /b /a-d "*.jpg" 2^>nul' 
) DO ECHO REN "%%f" "%%~nxa (!count!).jpg"&SET /a count +=1 
IF EXIST "%%~nxa (0).jpg" ECHO REN "%%~nxa (0).jpg" "%%~nxa.jpg" 
POPD 
) 

GOTO :EOF 

Вы должны были бы изменить установку sourcedir в соответствии с вашими обстоятельствами.

Первый шаг - обработать имена каталогов, рекурсивно в %%a. Это затем push ed (который переключается на номинированный каталог %%) и основной процесс выполняется перед выполнением pop для восстановления исходного каталога.

Основной процесс сначала считывает каталог для (dirnameanything .jpg) и сортирует в порядке обратного имени, чтобы обеспечить наивысшее имя в первую очередь. Затем все найденные имена переименовываются с дополнительным «.jpg». Это означает, что если каталог уже обработан (например, GAM002.jpg может существовать, поэтому он будет переименован gam002.jpg.jpg и, следовательно, gam002.jpg не будет существовать после этого первого переименования - и то же самое касается gam002 (1) - сейчас gam002 (1).jpg.jpg. Даже если gam002.jpg.jpg уже существует, этот метод является безопасным, так как переименование выполняется в порядке имен обратного направления, gam002.jpg.jpg бы был переименован gam002.jpg.jpg.jpg до того, как попытка переименовать gam002.jpg в gam002.jpg.jpg

Следующего шага является реальной последовательностью переименования. Каждый из .jpg указан и затем обрабатывается, поэтому первоначальный список файлов переименовывается, избегая проблемы с обнаружением уже переименованного файла. Каждый из них просто переименовывается с увеличением count в круглых скобках после имени родительского каталога.

Наконец, "parentdirectoryname (0) .jpg" переименована в "parentdirectoryname .jpg" и все завершено.

Смежные вопросы