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

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

Ответить
Настройки темы
CMD/BAT - Последовательное, циклическое переименование файлов в каталоге по кругу в cmd.

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


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

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


Изменения
Автор: Vasylich
Дата: 07-04-2016
Описание: уточнение
Здравствуйте!
Почти не разбираюсь в скриптах, поэтому прошу помощи.
В каталоге есть файлы c числовыми именами: 01.jpg, 02.jpg и т.д.
Нужно переименовывать файлы так, что бы после каждого срабатывания cmd
последний становился первым по порядку цифр, первый вторым, второй - третьим и т.д..
Первоначальное именование по порядку возможно, если будет необходимо для скрипта.
Файлов может быть от 01 до 99.

Спасибо.

Отправлено: 14:40, 07-04-2016

 

Ветеран


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

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


Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:41, 07-04-2016 | #2



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

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


Ветеран


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

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


Foreigner, а вдрух у него там FAT32!

Отправлено: 17:19, 07-04-2016 | #3


Ветеран


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

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


Iska, А в чем может возникнуть проблема? Под рукой даже флешки нет проверить

Отправлено: 17:25, 07-04-2016 | #4


Аватара для Elven

Ветеран


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

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


Foreigner, в именах.

Отправлено: 17:30, 07-04-2016 | #5


Ветеран


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

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


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
.

при следующем запуске, по идее, должно произойти обратное, не проверял.

Отправлено: 17:50, 07-04-2016 | #6


Ветеран


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

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


Цитата Foreigner:
Iska, А в чем может возникнуть проблема? »
В порядке отдачи имён функциями ОС.

На 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 навёл меня на мысль, что достаточно просто предварительно скопировать части в правильном порядке во временную папку, а затем уже смело использовать «copy /b name.ext.part????.bin name.ext» в этой временной папке — ОС будет уже гарантированно отдавать файлы команде copy в нужном порядке (кстати, только сейчас заметил, что описание там в самом скрипте не исправил ).
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:24, 07-04-2016 | #7


Ветеран


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

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


Iska, Давно не сталкивался, даже ради интереса создал vhd на fat32 -- действительно сортировка от обратного, тогда лучше через dir + sort (надеюсь, что там не 95)))
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

for %%i in (*.jpg) do set /a cnt+=1
for /f %%i in ('dir /b *.jpg ^| sort') do (

	set "new=0!cnt!"
	ren "%%i" "!new:~-2!.tmp"
	set /a cnt-=1

)

ren *.tmp *.jpg
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:41, 07-04-2016 | #8


Ветеран


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

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


Ну да, тут вполне подойдёт даже и обычный «dir /b /o:n …».

Отправлено: 19:13, 07-04-2016 | #9


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


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

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


Цитата 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 »
Двойной прогон, правильно я понял?

Отправлено: 19:15, 07-04-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование файлов в каталоге (.avi) dokxpi@vk Скриптовые языки администрирования Windows 15 21-05-2015 00:44
CMD/BAT - Проверка файлов в сетевом каталоге, и создание списка из тех которые по размеру < N wonted Скриптовые языки администрирования Windows 21 17-03-2014 13:40
CMD/BAT - Переименование файлов по маске tobornforlife@vk Скриптовые языки администрирования Windows 5 24-02-2014 17:07
CMD/BAT - [решено] узнать количество файлов в каталоге через CMD toro Скриптовые языки администрирования Windows 5 04-12-2013 06:31
CMD/BAT - Переименование файлов в каталоге flower Скриптовые языки администрирования Windows 2 28-11-2013 15:00




 
Переход