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

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

Ответить
Настройки темы
Любой язык - [решено] Переименование указанного количества файлов следуя нумерации

Ветеран


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

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


Изменения
Автор: Alexander_88
Дата: 07-07-2019
Здравствуйте. Есть ли способ переименовать заданное количество файлов в указанной папке, продолжая нумерацию и названия файлов, присутствующих в папке?
К примеру в папке 30 файлов, 10 файлов вида 0001start.avi, 0002start.wmv, 0003start.avi - 0010start.mpg, остальные 20 имеют различные названия. Я задал количество 20 файлов. Можно ли сделать так, чтобы код переименовывал файлы имеющие различные названия, продолжая нумерацию и повторяя название имеющимся, т.е. в данном примере 20 файлов должны переименоваться на 0011start.*, 0012start.*, 0013start.* - 0030start.*. Известно, что нумерация всегда четырехзначная, слова после нумерации в одной папке всегда одинаковы (но они могут быть не только "start"), расширения могут быть различные (видео файлы) Нумерация может быть не с еденицы, к примеру с 0546stop.* 0547stop.*

Отправлено: 21:17, 23-08-2014

 

Ветеран


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

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


Alexander_88, в общем и целом — можно. Дьявол, как обычно, кроется в деталях.

К чему я это? Дело в том, что подобного рода переименования, если только они не производятся планово, регулярно и на постоянной основе, проще и удобнее всего делать «ручками» в любом приличном файловом менеджере или специально на то предназначенном приложении. Например:


У Вас как с этим?

Отправлено: 22:21, 23-08-2014 | #2



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

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


Ветеран


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

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


Здравствуйте. Alexander_88.


Код: Выделить весь код
@echo off
chcp 1251>nul

set "folder=D:\Work\118\указанная папка"

set "reg_exp=^[0-9][0-9][0-9][0-9]start\...*"
for /f "delims=" %%i in ('
 dir /a-d/b/o-n "%folder%\*start.*"^| findstr /ir "%reg_exp%"
') do (
 set max=%%i
 goto:#
 )

:#
set count=1%max:~,4%
for /f "delims=" %%i in ('
 dir /a-d/b "%folder%"^| findstr /irv "%reg_exp%"
') do (
 set /a count+=1
 call ren "%folder%\%%i" "%%count:~1%%start%%~xi"
 )

exit /b

Последний раз редактировалось Georgio, 06-03-2016 в 15:55. Причина: опечатка.

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

Отправлено: 22:31, 23-08-2014 | #3


Ветеран


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

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


Iska, да, я это делаю в тотал командоре, просто необходимо заходить в него, заходить в папки, их штук 10, и в каждой выделять файлы , писать маски. А если бы был такой код чтоб отслеживал нумерацию и проолжал после самой большой, значительно бы можно было сэкономить время, даже текст можно было самому в коде ручками прописать, а нумерация чтоб как то продолжалась, с таким кодом создать несколько бат файлов (на разные папки) и разместить их на рабочий стол, если потребуется продолжить нумерацию файлов в какой то папке, запустил бат со стола и готово

Отправлено: 22:34, 23-08-2014 | #4


Ветеран


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

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


Georgio, спасибо, отлично работает, а можно ли задать число файлов для переименования?

Отправлено: 23:03, 23-08-2014 | #5


Ветеран


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

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


Цитата Alexander_88:
а можно ли задать число файлов для переименования? »

Код: Выделить весь код
@echo off
chcp 1251>nul

set number=20
set "folder=D:\Work\121\указанная папка"

set "reg_exp=^[0-9][0-9][0-9][0-9]start\...*"
for /f "delims=" %%i in ('
 dir /a-d/b/o-n "%folder%\*start.*"^| findstr /ir "%reg_exp%"
') do (
 set max=%%i
 goto:#
 )

:#
set count=1%max:~,4%
for /f "delims=" %%i in ('
 dir /a-d/b "%folder%"^| findstr /irv "%reg_exp%"
') do (
 set /a count_2+=1
 for /f %%j in ('
  set /a count_2
 ') do (
  if %%j leq %number% (
   set /a count+=1
   call ren "%folder%\%%i" "%%count:~1%%start%%~xi"
   ) else (
   exit /b
   )
  )
 )

exit /b

Последний раз редактировалось Georgio, 06-03-2016 в 15:56. Причина: опечатка.

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

Отправлено: 09:22, 24-08-2014 | #6


Ветеран


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

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


Georgio, спасибо, проверил, все работает

Отправлено: 09:35, 24-08-2014 | #7


Ветеран


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

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


Здравствуйте, подскажите пожалуйста, что нужно изменить в последнем коде, если у меня теперь у файлов нумерация пишется в конце...
т.е. start0001.avi, start0002.avi, start0003.avi и т.д.

я строчку:

Код: Выделить весь код
set "reg_exp=^[0-9][0-9][0-9][0-9]start\...*"
изменил на:

Код: Выделить весь код
set "reg_exp=^start[0-9][0-9][0-9][0-9]\...*"
Но к сожалению это не помогло

Отправлено: 15:37, 05-03-2016 | #8


Ветеран


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

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


Ещё замените
Код: Выделить весь код
 dir /a-d/b/o-n "%folder%\*start.*"^| findstr /ir "%reg_exp%"
на
Код: Выделить весь код
 dir /a-d/b/o-n "%folder%\start*.*"^| findstr /ir "%reg_exp%"
и
Код: Выделить весь код
   call ren "%folder%\%%i" "%%count:~1%%start%%~xi"
на
Код: Выделить весь код
   call ren "%folder%\%%i" "start%%count:~1%%%%~xi"
.

Последний раз редактировалось Georgio, 06-03-2016 в 15:56. Причина: опечатка.

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

Отправлено: 16:03, 05-03-2016 | #9


Ветеран


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

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


Спасибо за ответ
вот в этом посте

http://forum.oszone.net/post-2512648-9.html

был заменен код немножко
Может из - за этого что - то другое заменить нужно? (я просто забыл, что код заменяли)
Я заменил код, как вы сказали.

Сейчас у меня вот так:

Код: Выделить весь код
@echo off
chcp 1251>nul

set number=20
set "folder=i:\папка"

set "reg_exp=^start[0-9][0-9][0-9][0-9]\...*"
for /f "delims=" %%? in ('
 dir /a-d/b/o-n "%folder%\start*.*"^| findstr /ir "%reg_exp%"
') do (
 set max=%%?
 goto:#
 )

:#
set count=1%max:~,4%
for /f "delims=" %%? in ('
 dir /a-d/b "%folder%"^| findstr /irv "%reg_exp%"
') do (
 set /a count_2+=1
 for /f %%* in ('
  set /a count_2
 ') do (
  if %%* leq %number% (
   set /a count+=1
   call ren "%folder%\%%?" "start%%count:~1%%%%~x?"
   ) else (
   exit /b
   )
  )
 )
exit /b
Вроде файлы переименовываются, но не в то, что нужно, несколько надписей в окне (ошибок) о том, что файл с таким именем уже существует.
переименовались несколько файлов на start с разным расширением, а так же на имена имена start1 start2 ...

Отправлено: 18:23, 05-03-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. Joni Скриптовые языки администрирования Windows 6 11-07-2012 11:18
VBS/WSH/JS - Подсчет количества ini файлов в папке XXXp Скриптовые языки администрирования Windows 14 10-04-2012 02:06
CMD/BAT - [решено] Счетчик количества файлов Arsenik77 Скриптовые языки администрирования Windows 1 28-08-2011 11:13
Удаление файлов из списка указанного в txt blacks2 Вебмастеру 28 02-09-2009 20:09
Интерфейс - [решено] Переименование большого количества файлов 7human7 Microsoft Windows 2000/XP 7 22-11-2008 09:48




 
Переход