|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Непонятная ошибка при переименовании файлов в цикле |
|
|
CMD/BAT - [решено] Непонятная ошибка при переименовании файлов в цикле
|
Новый участник Сообщения: 6 |
Добрый день!
Такая проблема - периодически поступают файлы следующего формата БББЦЦЦЦЦ.dat, их надо переименовывать с увеличением значения "ЦЦЦЦЦ" на определенную величину Вот такой CMD: set "ni=06300" FOR %%a IN ("TST*.dat") DO call :nn_fnd "%%a" Exit :nn_fnd set "fname=%~n1" set "fnd=%fname:~-8,3%"& set "n1=%fname:~-5%" set /a "nn=1%n1% + 1%ni%" set "nn=%nn:~1%" ren "%~1" "%fnd%%nn%%~x1" exit /b Пример списка файлов: tst00171.dat tst00172.dat tst00173.dat tst00774.dat tst01575.dat tst01876.dat tst05577.dat tst09478.dat Всё вроде бы работает, но первый файл переименовывается дважды - первым в цикле (как и должно быть), и перед "tst09478". После первого раза - tst06471.dat, и потом ещё раз - tst12771.dat в итоге вся суть идеи теряет смысл...((( Не пойму, в чем косяк... |
|
Отправлено: 12:47, 01-06-2020 |
Ветеран Сообщения: 1758
|
|
Отправлено: 13:53, 01-06-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Проблема решилась - подсмотрел в "Похожих темах" внизу страницы ))) CMD/BAT - [решено] Ошибка в переименовании группы файлов. |
|
Отправлено: 15:40, 01-06-2020 | #3 |
Ветеран Сообщения: 1758
|
Цитата lev0tsk:
Из tst00001.dat получаю tst00011, из tst00101.dat -- tst00111.dat, из tst00201.dat -- tst00211.dat и т.д. Попробуйте перезапустить cmd.exe если ее не закрывали. В вашем батнике нет ограничения области видимости переменных и они после выполнения экспортируются в сессию консоли. Посмотрите переменные командой set Попробуйте изменить for на |
|
Отправлено: 16:12, 01-06-2020 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
до ni=99 - работает (вроде) корректно при ni=100 - получается наложение: tst00001 + 100 = tst00101 (второй файл) а при ni>100 - получается сабж, двойное переименование первого файла. Почему так - кукуй его знает...??? *** Цитата Foreigner:
|
|||
Отправлено: 16:43, 01-06-2020 | #5 |
Ветеран Сообщения: 1758
|
Цитата lev0tsk:
|
|
Отправлено: 16:56, 01-06-2020 | #6 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Не-е... в том то и дело, что у меня по условию переименования "ni" всегда должно быть больше чем цифровая часть любого из файлов из списка.
А с "dir" нормально работает с любым порядком сортировки, т.к. список файлов создается до начала переименования и более не изменяется. |
Отправлено: 17:10, 01-06-2020 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off Set "FileIn=Z:\Box_In\tst?????.dat" Set /A Plus=6300 For %%f In ("%FileIn%") Do Ren "%%f" "%%~nxf.~~~" For %%f In ("%FileIn%.~~~") Do ( Set "Name=%%~nf" Call :MyRen "%%f" "%%~nf" "%%Name:~0,3%%" "1%%Name:~3,5%%" %Plus% ) Exit /B :MyRen Set /A N=%~4+%~5 Ren %1 "%~3%N:~1%%~x2" Exit /B 0 |
------- Последний раз редактировалось megaloman, 01-06-2020 в 21:01. Отправлено: 20:56, 01-06-2020 | #8 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Если:
Цитата lev0tsk:
|
|
------- Отправлено: 21:58, 01-06-2020 | #9 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 11:39, 02-06-2020 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - При переименовании файлов "Этот файл или папка не доступны" | DmitriySC | Microsoft Windows 10 | 1 | 05-07-2016 16:41 | |
CMD/BAT - [решено] Ошибка в переименовании группы файлов. | shao | Скриптовые языки администрирования Windows | 8 | 24-04-2015 14:17 | |
Разное - Ошибка при переименовании папки, файла | vit063 | Microsoft Windows Vista | 6 | 22-07-2010 10:33 | |
Разное - Ошибка 0x80004005 при создании или переименовании папок | sektor1876 | Microsoft Windows 7 | 19 | 01-06-2010 16:01 | |
Разное - При переименовании файлов они меняют своё имя только после нажатия F5. | roniro | Microsoft Windows 2000/XP | 1 | 11-02-2010 16:04 |
|