![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] не работает счетчик переименования файлов |
|
CMD/BAT - [решено] не работает счетчик переименования файлов
|
Новый участник Сообщения: 13 |
всем привет! помогите со счетчиком в bat-файле. Задача следующая: привести имена файлов к виду name_01.txt, name_02.txt, name_03.txt и тд.
Сам додумался до вот этого. @echo off SetLocal EnableDelayedExpansion for %%t in (*.txt) do (set /a m+=1 rename %%t !m!.txt) 1. если файлов не более 37, то имя присваивается name_1.txt name_2.txt ......... name_37.txt 2. как только добавляется 38-й файл, имена присваиваются вот так name_1.txt name_10.txt name_38.txt ........ name_73.txt 3. когда файлов более 100, ситуация для меня еще более странная name_1.txt name_10.txt name_100.txt Вообщем что-то не так, а вот что не пойму.... |
|
Отправлено: 19:35, 13-04-2013 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Iska прав. Можно перебирать от 1 до FF. 10(10) = 0A(16).
gora, поставил эксперимент. Новые файлы не подхватываются (ставил паузу в цикле, а потом создал пару файлов - до и после алфавита). Среда внутри скобок выполняется единоразово в новом дочернем потоке cmd /c. Вариант через недокументированный код возврата (минус: будет работать совсем не быстро). Да и решил использовать Dir. @echo off SetLocal EnableExtensions EnableDelayedExpansion Set SrcFolder=l:\Bash\16X-ren\Test ::rd /Q "%SrcFolder%"& md "%SrcFolder%"& For /L %%C in (1,1,255) do <nul set test=>"%SrcFolder%\%%C" ::pause Set C=0 For /F "delims=" %%A in ('dir /b /a-D-L "%SrcFolder%\*"') do ( Set /a C+=1 if !C! GTR 255 (echo Too more files& goto ext) cmd /c exit /b !C! ren "%SrcFolder%\%%A" "name_!=ExitCode:~-2!.txt" ) :ext pause Xeruvim4ik, и во что переименовывать файл под номером 256? В 16-ричную математику он не влезает в 2 разряда. Уточните примерное кол-во файлов. Это критично. |
------- Отправлено: 19:35, 14-04-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать gora, я это пробовал. В зависимости от условий, получаем либо пропуск в нумерации, либо отлуп вида «файл существует» при переименовании.
|
Отправлено: 20:49, 14-04-2013 | #12 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Итак, Xeruvim4ik хочет иметь файлы вида Name_nn.txt. Если nn -десятичное - это не более 99 файлов, шестнадцатиричное - не более ff (=255) файлов. Можно изобрести, допустим, тридцатьшестьричную
![]() @Echo Off SetLocal EnableExtensions EnableDelayedExpansion Set Num=0123456789abcdefghijklmnopqrstuvwxyz Set /A Razrad=36 Set /A NNN=%Razrad%-1 Set /A i=0 Set /A j=0 Set End=_%Time:~0,2%%Time:~3,2%%Time:~6,2%%Time:~9,2% FOR /F "usebackq delims=" %%f IN (`Dir "*.txt" /B /A:-D`) DO ( Set /A j=!j!+1 If !j! GTR %NNN% Set /A j=0 & Set /A i=!i!+1 If !i! GTR %NNN% GoTo :Eof Call :Number !i! !j! Move "%%~f" "Name_!RRR!.txt%End%" ) FOR /F "usebackq delims=" %%f IN (`Dir "*.txt%End%" /B /A:-D`) DO ( Set NEnd=%%~f Ren "!NEnd!" "!NEnd:~0,-9!" ) GoTo :Eof :Number Set RRR=!Num:~%1,1!!Num:~%2,1! GoTo :Eof Цитата Xeruvim4ik:
Спасибо Gora, похоже, не всё так просто в одной директории, как мне хотелось. Поэтому в этом решении исходные перемещаю сначала в файлы, где к расширению добавляю время запуска батника (время должно быть в формате чч:мм:сс,дд с любыми разделителями), а затем переименовываю в txt Кстати, если написать Set /A Razrad=16, получим классическую шестнадцатиричную нумерацию от 01 до FF |
|
------- Последний раз редактировалось megaloman, 14-04-2013 в 22:04. Отправлено: 21:34, 14-04-2013 | #13 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать megaloman, вы гений, это то, что нужно, я бы до такого никогда не додумался
|
Отправлено: 21:57, 15-04-2013 | #14 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Не срабатывает скрипт переноса файлов по размеру - !!! с условием переименования !!! | dark-------13 | Скриптовые языки администрирования Windows | 0 | 19-03-2012 15:27 | |
Нужна программа для пакетного переименования файлов | gaulle | Хочу все знать | 5 | 18-01-2012 07:30 | |
Прочие - Программы для массового переименования каталогов и файлов | Daiv | Программное обеспечение Windows | 39 | 17-06-2011 16:33 | |
Скрипт автоматического переименования файлов mp3 | Ламер | Программирование в *nix | 2 | 02-03-2011 19:59 | |
CMD/BAT - [решено] Не работает скрипт группового переименования по маске | Ins_16 | Скриптовые языки администрирования Windows | 2 | 09-12-2010 14:52 |
|