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

Аватара пользователя
a_sheludko

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

Сообщение a_sheludko »

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

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение megaloman »

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

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение megaloman »

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

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение megaloman »

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

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение a_sheludko »

Код:

Код: Выделить всё

@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?
CMD/BAT - [решено] Групповое переименование файлов по маске




это остается под вопросом.
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение alpap »

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

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение a_sheludko »

Цитата a_sheludko:



Указал как входящий каталог papka_in с файлами *.jpg,
CMD/BAT - [решено] Групповое переименование файлов по маске




Покажите эту строку, как именно указали, в точности до буквы.
Аватара пользователя
a_sheludko

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение a_sheludko »

Цитата a_sheludko:



...если файл уже существует, должен добавляться следующий номер.
CMD/BAT - [решено] Групповое переименование файлов по маске





Цитата a_sheludko:



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










Код:

Код: Выделить всё

@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



Файлы с восклицательными знаками в имени тоже будут перемещаться и переименовыватьсяИзображение.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение Georgio »

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

Re: CMD/BAT - [решено] Групповое переименование файлов по маске

Сообщение a_sheludko »

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

Вернуться в «Скриптовые языки администрирования Windows»