Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


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

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


Итак, Xeruvim4ik хочет иметь файлы вида Name_nn.txt. Если nn -десятичное - это не более 99 файлов, шестнадцатиричное - не более ff (=255) файлов. Можно изобрести, допустим, тридцатьшестьричную систему, где в каждом разряде будут символы из набора 0123456789abcdefghijklmnopqrstuvwxyz, но при этом всё равно число файлов не очень большое =1295 (если не просчитался). Вот решение для такой системы
Код: Выделить весь код
@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:
файлов больше 255.... и даже не 256
Xeruvim4ik, осознайте, что в рамках двух разрядов вы не можете закодировать бесконечное число файлов, поэтому должен быть какой-то верхний предел, либо не требовать, чтобы файлы имели вид Name_nn.txt, а, например, Name_N.txt, где N изменяется от 1 до бесконечности.
Спасибо Gora, похоже, не всё так просто в одной директории, как мне хотелось. Поэтому в этом решении исходные перемещаю сначала в файлы, где к расширению добавляю время запуска батника (время должно быть в формате чч:мм:сс,дд с любыми разделителями), а затем переименовываю в txt

Кстати, если написать Set /A Razrad=16, получим классическую шестнадцатиричную нумерацию от 01 до FF

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 14-04-2013 в 22:04.

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

Отправлено: 21:34, 14-04-2013 | #13