Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Групповое переименование файлов по маске

Ответить
Настройки темы
CMD/BAT - [решено] Групповое переименование файлов по маске

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток! В написании командных скриптов только разбираюсь. Помогите, пожалуйста, реализовать задачу. Необходимо перемещать файлы картинок из одной папки в другую с переименованием их по маске (001, 002, 003, ...), если файл уже существует, должен добавляться следующий номер. Спасибо заранее всем откликнувшимся за ответ.

Отправлено: 19:53, 04-12-2016

 

Ветеран


Contributor


Сообщения: 2732
Благодарности: 1698

Профиль | Отправить PM | Цитировать


a_sheludko, Не понятно, что Вы имеете ввиду под маской. Приведите несколько примеров как было имя файла и как должно быть.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 21:38, 04-12-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, то есть есть папка №1 с картинками, и их нужно копировать в папку №2 с именами 001.jpg, 002.jpg и так далее

Отправлено: 23:30, 04-12-2016 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


megaloman, добавлю: «…пропуская нумерацию существующих имён в конечной папке».

a_sheludko, а что делать, если файлов окажется более 999?

Отправлено: 00:36, 05-12-2016 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
set "d_in=papka_in"
set "d_out=papka_out"
for /f "delims=" %%a in ('dir/a-d/b "%d_in%\*.jpg"') do set/a n+=1& set "m=00!n!"& copy "%d_in%\%%~nxa" "%d_out%\!m:~-3!%%~xa"
pause>nul
если именно перемещать copy поменяйте на move

Цитата Iska:
что делать, если файлов окажется более 999? »
это остается под вопросом.

Отправлено: 00:49, 05-12-2016 | #5


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Указал как входящий каталог papka_in с файлами *.jpg, но почему-то ошибка "Синтаксическая ошибка в имени файла, имени папки или метке тома". В чем может быть дело? Вроде все правильно. Возможно, что то "не вижу", не так делаю.

Отправлено: 01:44, 05-12-2016 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата a_sheludko:
Указал как входящий каталог papka_in с файлами *.jpg, »
Покажите эту строку, как именно указали, в точности до буквы.

Отправлено: 03:01, 05-12-2016 | #7


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата a_sheludko:
...если файл уже существует, должен добавляться следующий номер. »
Цитата a_sheludko:
Необходимо перемещать файлы... »


Код: Выделить весь код
@echo off
setlocal

set "source=C:\Images\1"
set "destination=C:\Images\2"

if not exist "%source%\" exit /b 1
if not exist "%destination%\" exit /b 2

for /f "delims=" %%i in ('2^>nul dir /a-d /b /on "%source%\*.jpg"') do (
    set /a i+=1
    for /f %%j in ('set /a i') do (
        set "j=00%%j"
        cmd /v /c^
            for /l %%k in (^) do @^
                if not exist "%destination%\!j:~-3!%%~xi" (^
                    move "%source%\%%i" "%destination%\!j:~-3!%%~xi"^&^
                    exit /b !i!^
                ^) else^
                    ^>nul set /a i+=1^&^
                    set "j=00!i!"
        call set i=%%errorlevel%%
    )
)

endlocal
exit /b 0

Файлы с восклицательными знаками в имени тоже будут перемещаться и переименовываться.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:02, 05-12-2016 | #8


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Georgio, спасибо. Работает. Признателен за помощь.

Отправлено: 09:30, 05-12-2016 | #9


Пользователь


Сообщения: 102
Благодарности: 6

Профиль | Отправить PM | Цитировать


Добрый день , помогите со скриптом для переименования такого типа файла:

P_005418798TM.jpg
P_005418798FM.jpg
P_005418798D1.jpg
P_005418798D2.jpg

и чтобы переименовывалось в:

54187_98_1.jpg
54187_98_2.jpg
54187_98_3.jpg
54187_98_4.jpg

чтобы убирало нули
может быть файлов больше 4-x

P_005418798D5.jpg
P_005418798D7.jpg

54187_98_5.jpg
54187_98_6.jpg

Отправлено: 13:51, 28-12-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Групповое переименование файлов по маске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Переименование файла по маске. Damien_here Скриптовые языки администрирования Windows 5 13-06-2017 12:51
CMD/BAT - Пакетное переименование файлов по маске Viktor99 Скриптовые языки администрирования Windows 1 15-08-2016 23:25
CMD/BAT - [решено] Переименование файлов с заменой символов по маске Constantant Скриптовые языки администрирования Windows 41 29-03-2016 03:40
CMD/BAT - Переименование файлов по маске tobornforlife@vk Скриптовые языки администрирования Windows 5 24-02-2014 17:07
CMD/BAT - [решено] групповое переименование папок в дереве WChek Скриптовые языки администрирования Windows 2 19-03-2009 11:43




 
Переход