CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
-
Vasylich
CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Здравствуйте!
Почти не разбираюсь в скриптах, поэтому прошу помощи.
В каталоге есть файлы c числовыми именами: 01.jpg, 02.jpg и т.д.
Нужно переименовывать файлы так, что бы после каждого срабатывания cmd
последний становился первым по порядку цифр, первый вторым, второй - третьим и т.д..
Первоначальное именование по порядку возможно, если будет необходимо для скрипта.
Файлов может быть от 01 до 99.
Спасибо.
Почти не разбираюсь в скриптах, поэтому прошу помощи.
В каталоге есть файлы c числовыми именами: 01.jpg, 02.jpg и т.д.
Нужно переименовывать файлы так, что бы после каждого срабатывания cmd
последний становился первым по порядку цифр, первый вторым, второй - третьим и т.д..
Первоначальное именование по порядку возможно, если будет необходимо для скрипта.
Файлов может быть от 01 до 99.
Спасибо.
-
Foreigner
Re: CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Код:
Код: Выделить всё
@echo off
setlocal enabledelayedexpansion
for %%i in (*.jpg) do set /a cnt+=1
for %%i in (*.jpg) do (
set "new=0!cnt!"
ren "%%i" "!new:~-2!.tmp"
set /a cnt-=1
)
ren *.tmp *.jpg-
Foreigner
Re: CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Vasylich, Каждый запуск зеркально переименовывает файлы
-
Foreigner
Re: CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Iska, А в чем может возникнуть проблема? Под рукой даже флешки нет проверить
-
Vasylich
-
Iska
Re: CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Foreigner, а вдрух у него там FAT32!
-
Iska
Re: CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Цитата Foreigner:
Iska, А в чем может возникнуть проблема?
В порядке отдачи имён функциями ОС.
На NTFS будет всегда лексикографический, поскольку они так и хранятся в MFT — в виде упорядоченного B+ дерева. На FATx порядок будет соответствовать дате создания файлов:
Код:
Ровно то же будет и в WSH, и в PoSH, и в C/C++.
В частности, из-за этого пришлось специально учитывать такую возможность здесь:
).
Iska, А в чем может возникнуть проблема?
CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
В порядке отдачи имён функциями ОС.
На NTFS будет всегда лексикографический, поскольку они так и хранятся в MFT — в виде упорядоченного B+ дерева. На FATx порядок будет соответствовать дате создания файлов:
Код:
Код: Выделить всё
H:\04>for /l %i in (5, -1, 1) do @copy nul 0%i.txt
Скопировано файлов: 1.
Скопировано файлов: 1.
Скопировано файлов: 1.
Скопировано файлов: 1.
Скопировано файлов: 1.
H:\04>for %i in (*.txt) do @echo %i
05.txt
04.txt
03.txt
02.txt
01.txtРовно то же будет и в WSH, и в PoSH, и в C/C++.
В частности, из-за этого пришлось специально учитывать такую возможность здесь:
VBScript & CMD: разделение файла на фрагменты и их последующее слияние — Серый форум
. В первом варианте я не сообразил как побороть сие простым способом, и сделал поочерёдное «подклеивание» частей. Затем тутошний коллега Diamond навёл меня на мысль, что достаточно просто предварительно скопировать части в правильном[/i] порядке во временную папку, а затем уже смело использовать «copy /b name.ext.part????.bin name.ext» в этой временной папке — ОС будет уже гарантированно отдавать файлы команде copy в нужном порядке (кстати, только сейчас заметил, что описание там в самом скрипте не исправил
).-
Foreigner
-
alpap
Re: CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Vasylich, Переименуютя все сразу в нужном вам порядке с первого запуска:
Код:
.
при следующем запуске, по идее, должно произойти обратное, не проверял.
Код:
Код: Выделить всё
@echo off
for /f "delims= eol=" %%a in ('dir /a-d/b "katalog\*.jpg"^|sort /+2147483647') do set /a n+=1& cmd/v/c set "m=0!n!"^& ren "katalog\%%~nxa" "new!m:~-2!%%~xa"
exit /b.
при следующем запуске, по идее, должно произойти обратное, не проверял.
-
Iska
Re: CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Цитата Foreigner:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
for %%i in (*.jpg) do set /a cnt+=1
for %%i in (*.jpg) do (
set "new=0!cnt!"
ren "%%i" "!new:~-2!.tmp"
set /a cnt-=1
)
ren *.tmp *.jpg
Двойной прогон, правильно я понял?
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
for %%i in (*.jpg) do set /a cnt+=1
for %%i in (*.jpg) do (
set "new=0!cnt!"
ren "%%i" "!new:~-2!.tmp"
set /a cnt-=1
)
ren *.tmp *.jpg
CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.
Двойной прогон, правильно я понял?