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

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

Ответить
Настройки темы
CMD/BAT - переименование файлов

Ветеран


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

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


Изменения
Автор: Alexander_88
Дата: 28-05-2015
здравствуйте, подскажите пожалуйста, почему не работает данный код по переименованию 20 файлов?

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

set number=20
set "folder=F:\02 indian"

set "reg_exp=^[0-9][0-9][0-9][0-9]ind\...*"
for /f "delims=" %%i in ('
 dir /a-d/b/o-n "%folder%\*ind.*"^| 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%%ind%%~xi%
   ) else (
pause
   exit /b
   )
  )
 )

exit /b
с другой папкой и с другим исключением для названия файла работает

Отправлено: 05:04, 28-05-2015

 

Ветеран


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

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


Alexander_88, было бы неплохо побольше конкретики.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:38, 28-05-2015 | #2



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

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


Ветеран


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

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


вот в этой теме, мне помогли с кодом переименования файлов
http://forum.oszone.net/thread-286926.html

он работает на всех папках с файлами, но с одной почему - то не работает (которую я примел выше, я в ней выделил также то, что относится именно к этой папке)

Отправлено: 15:25, 28-05-2015 | #3


Забанен


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

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


Alexander_88, чем путанней и невнятней объяснение, тем более вероятность затянутости решения проблемы. Где логи или хотя бы скриншоты? И к слову, странная регулярка для findstr.

Отправлено: 17:34, 28-05-2015 | #4


Ветеран


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

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


вот, что в окне появляется:

Последний раз редактировалось Alexander_88, 16-10-2015 в 09:28.


Отправлено: 19:27, 28-05-2015 | #5


Ветеран


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

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


Alexander_88, Уберите chcp и покажите ошибку

greg zakharov, Одна точка лишняя, но не должна влиять на результат

Отправлено: 19:42, 28-05-2015 | #6


Ветеран


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

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


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

Последний раз редактировалось Alexander_88, 16-10-2015 в 09:28.


Отправлено: 23:23, 28-05-2015 | #7


Забанен


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

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


Foreigner, дело не в точке, а в коде вообще. Если бы нечто подобным образом писалось в конторе которой работаю, за это бы точно побили, изнасиловали и убили, причем необязательно в этом порядке. А если серьезно, людям свойственно все усложнять.

Отправлено: 23:25, 28-05-2015 | #8


Ветеран


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

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


Alexander_88, заменил в коде все "%%i" и "%%j" и их модификации на "%%?" и "%%*" и их модификации соответственно:


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

set number=20
set "folder=F:\02 indian"

set "reg_exp=^[0-9][0-9][0-9][0-9]ind\...*"
for /f "delims=" %%? in ('
 dir /a-d/b/o-n "%folder%\*ind.*"^| 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%\%%?" "%%count:~1%%ind%%~x?"
   ) else (
   exit /b
   )
  )
 )
exit /b

.



Господа, догадайтесь, зачем я это сделал. Случай очень интересен для теоретиков.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:47, 29-05-2015 | #9


Ветеран


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

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


Georgio, спасибо, теперь работает с этой проблемной папкой

еще к стате было такое (на старом коде), что не переименовывался 1 файл из папки... это бывало редко.. к примеру в папке файлы 0001amb - 0010amb,
кодом переименовываются другие файлы в папке, не 20 штук как указано, а 19, и 1 какой - то пропускается (0012amb - 0030amb), а 0011amb почему то не ту. такое редко, но бывало, потом с новым кодом попробую, может такого не будет

Последний раз редактировалось Alexander_88, 29-05-2015 в 12:53.


Отправлено: 12:45, 29-05-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Переименование файлов Verilog Скриптовые языки администрирования Windows 4 10-12-2014 14:55
Переименование файлов B1010 Видео и аудио: обработка и кодирование 0 28-09-2014 11:38
CMD/BAT - Переименование файлов. gen0m.rsw Скриптовые языки администрирования Windows 1 15-10-2010 19:15
переименование файлов mask Программирование и базы данных 6 20-05-2003 00:53
Переименование файлов Pavelz Microsoft Windows NT/2000/2003 7 24-01-2003 10:32




 
Переход