Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Групповое переименование файлов по маске (http://forum.oszone.net/showthread.php?t=321433)

a_sheludko 04-12-2016 19:53 2692907

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

megaloman 04-12-2016 21:38 2692959

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

a_sheludko 04-12-2016 23:30 2692996

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

Iska 05-12-2016 00:36 2693001

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

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

alpap 05-12-2016 00:49 2693003

Код:

@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? »

это остается под вопросом.

a_sheludko 05-12-2016 01:44 2693011

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

Iska 05-12-2016 03:01 2693014

Цитата:

Цитата a_sheludko
Указал как входящий каталог papka_in с файлами *.jpg, »

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

Georgio 05-12-2016 06:02 2693019

Цитата:

Цитата 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


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

a_sheludko 05-12-2016 09:30 2693051

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

lovator 28-12-2018 13:51 2848727

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

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

megaloman 28-12-2018 16:15 2848763

Код:

@Echo Off
cls
        Set "FileIn=Z:\Box_In\P_00*.jpg"
        FOR %%f IN ("%FileIn%") DO (
                Call Set "Name=%%~nf"
                Call :MyRen "%%f" "%%Name:~4,5%%_%%Name:~9,2%%_"
        )
pause
GoTo :Eof

:MyRen
        Set /A i=101
        :Begin
                If Not Exist "%~dp1%~2%i:~1%%~x1" Ren %1 "%~2%i:~1%%~x1" >nul &GoTo :Eof
                Set /A i+=1
                GoTo :Begin
GoTo :Eof

Цитата:

Цитата lovator
может быть файлов больше 4-x »

Set /A i=101 даёт возможность обрабатывать до 99 файлов
Set /A i=1001 даст возможность обрабатывать до 999 файлов
и т д

Iska 28-12-2018 17:44 2848788

lovator, вообще-то мало информации о возможных значениях исходных имён файлов, а также о принципах переименования.


Время: 12:39.

Время: 12:39.
© OSzone.net 2001-