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

Компьютерный форум 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

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


Цитата Vasylich:
Так а первый for все-равно весь список пройдет.. »
И что из этого?

Отправлено: 23:03, 07-04-2016 | #21



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

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


Ветеран


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

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


Vasylich,
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
for /f "delims= eol=" %%a in ('dir /a-d/b "papka\*.jpg"^|sort /+2147483647') do (
 set /a n+=1& set "nf=%%~na"& set "m=0!n!"
 if !nf:~^,3! neq new (
  ren "papka\%%~nxa" "new!m:~-2!%%~xa"
 ) else (
  ren "papka\%%~nxa" "old!m:~-2!%%~xa"
))
exit /b
.
Это сообщение посчитали полезным следующие участники:

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


Ветеран


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

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


Цитата Vasylich:
Так а первый for все-равно весь список пройдет.. »
Vasylich, чем Вас это так тревожит? После первого прохода каталог будет кэширован в памяти, повторный опрос будет читать уже из кэша.

Отправлено: 01:51, 08-04-2016 | #23


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


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

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


Цитата Iska:
чем Вас это так тревожит? После первого прохода каталог будет кэширован в памяти, повторный опрос будет читать уже из кэша. »
Ничем но вспомнилось, что "краткость - сестра таланта".

Отправлено: 08:23, 08-04-2016 | #24


Ветеран


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

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


Цитата Vasylich:
вспомнилось, что "краткость - сестра таланта". »
Погоня за краткостью выливается в полную нечитаемость. Вспомните ТОТ знаменитый однострочник... Когда, помогите, не печатает
http://www.linux.org.ru/forum/development/392747

Отправлено: 08:38, 08-04-2016 | #25


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


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

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


Цитата Foreigner:
Погоня за краткостью выливается в полную нечитаемость. Вспомните ТОТ знаменитый однострочник... Когда, помогите, не печатает
http://www.linux.org.ru/forum/development/392747 »
Согласен. В юности писал на Паскале/С, всегда старался чтобы объектный файл был минимальным и
минимизировал число повторных операций путем замены на логические конструкции. Однако
сильно вырастали пояснения в коде к таким вариантам.

Отправлено: 08:54, 08-04-2016 | #26


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


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

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


Цитата alpap:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
for /f "delims= eol=" %%a in ('dir /a-d/b "papka\*.jpg"^|sort /+2147483647') do (
set /a n+=1& set "nf=%%~na"& set "m=0!n!"
if !nf:~^,3! neq new (
ren "papka\%%~nxa" "new!m:~-2!%%~xa"
) else (
ren "papka\%%~nxa" "old!m:~-2!%%~xa"
))
exit /b »
Работает неправильно. То первый становится последним, то наоборот. А должно быть последовательное движение по кругу.

Отправлено: 09:17, 08-04-2016 | #27


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


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

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


Цитата megaloman:
Код: Выделить весь код
Пояснение »
Код работает как нужно, благодарю!!!

Цитата Foreigner:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir /b /on *.jpg') do set /a cnt=1%%~ni-100
ren 01.jpg 01.tmp
for /l %%i in (2,1,%cnt%) do (
set "old=0%%i"
set /a new=%%i-1
set "new=0!new!"
ren !old:~-2!.jpg !new:~-2!.jpg
)
set "cnt=0%cnt%"
ren 01.tmp %cnt:~-2%.jpg »
Код работает, задачу решает, хотя и в обратном порядке Т.е. "последний" движется в начало.
Благодарю за помощь!

Цитата Foreigner:
Код: Выделить весь код
@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 »
Этот код - не работает. Проблема в логике?

Цитата alpap:
Код: Выделить весь код
@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
.
при следующем запуске, по идее, должно произойти обратное, не проверял. »
Код срабатывает правильно первый раз, затем - не работает.

Отправлено: 11:02, 08-04-2016 | #28


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


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

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


Цитата alpap:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
for /f "delims= eol=" %%a in ('dir /a-d/b "papka\*.jpg"^|sort /+2147483647') do (
set /a n+=1& set "nf=%%~na"& set "m=0!n!"
if !nf:~^,3! neq new (
ren "papka\%%~nxa" "new!m:~-2!%%~xa"
) else (
ren "papka\%%~nxa" "old!m:~-2!%%~xa"
))
exit /b »
Это код - не работает.

Отправлено: 11:18, 08-04-2016 | #29


Ветеран


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

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


Цитата Vasylich:
Код работает, задачу решает, хотя и в обратном порядке Т.е. "последний" движется в начало. »
Как заказывали, так и работает
Цитата Vasylich:
2. Переименовываем в цикле пока не достигнет конца шаблон ??.jpg: 02->01, 03->02, 04->03 ... с шагом 1 до последний->предпоследний »

Отправлено: 11:45, 08-04-2016 | #30



Компьютерный форум 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




 
Переход