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

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

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

Новый участник


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

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


Добрый день.Нужна помощь в доработке скрипта. В данной теме полный 0, но нет времени для полно изучения.
Код: Выделить весь код
@for /f "delims=" %%i in ('"dir /a-d/b *.png"') do @set /a n+=1& cmd /v:on /c ren "%%i" !n!.png
Проблема такая https://ibb.co/DfnVkSq При создании нового имени для данных файлов, файлы с наименованием image(10).png, image(11).png нумероваться как первыми ,хотя должны быть последними. Не подскажете как исправить?

Отправлено: 14:52, 12-09-2021

 

Ветеран


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

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


Не должны: dir не знает иной сортировки, нежели лексикографическая (а в Вашем примере — вообще в порядке чтения из оглавления каталога: на NTFS будет по алфавиту, на FAT32 — по мере создания записей).

Отправлено: 15:48, 12-09-2021 | #2



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

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


Новый участник


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

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


Цитата Iska:
Не должны: dir не знает иной сортировки, нежели лексикографическая (а в Вашем примере — вообще в порядке чтения из оглавления каталога: на NTFS будет по алфавиту, на FAT32 — по мере создания записей). »
Жаль. Тогда не подскажете выход с данной ситуации?

Отправлено: 16:09, 12-09-2021 | #3


Ветеран


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

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


именовать файлы с лидирующими недостающими нулями по отношению к разрядности числа в имени
file001..file099
file-0001..file-1000
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:19, 12-09-2021 | #4


Ветеран


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

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


Цитата Publipor:
не подскажете выход с данной ситуации? »
Подскажу. Можете использовать файловый менеджер, поддерживающий а) алфавитно-числовую сортировку, которую применяет Проводник (начиная с Windows XP), б) переименование с заданными возможностями. Из известных мне — это Far Manager+плагин Visual Renaming files и Total Commander (возможность группового переименования идёт в комплекте — Ctrl-M).

Но лучше зараз:
Цитата alpap:
именовать файлы с лидирующими недостающими нулями по отношению к разрядности числа в имени »

Отправлено: 18:54, 12-09-2021 | #5


Ветеран


Contributor


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

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


Цитата alpap:
именовать файлы с лидирующими недостающими нулями по отношению к разрядности числа в имени »
Код: Выделить весь код
	set /a n=1000
	@for /f "delims=" %%i in ('"dir /a-d/b *.png"') do @set /a n+=1& cmd /v:on /c ren "%%i" !n:~-3!.png

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

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

Отправлено: 22:16, 12-09-2021 | #6


Ветеран


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

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


на PowerShell
Код: Выделить весь код
$d = 'C:\Papka'

sl $d
Switch -Regex ((gci -af .).Name) {
  '^image\((\d+)\)\.png$' {
    rni $Matches[0] ($Matches[0] -Replace $Matches[1], $('{0:d3}' -f [int]$Matches[1]))
  }
}
будет переименовывать не подряд общим чохом, а именно:
image(10).png в image(010).png
image(1).png в image(001).png
...

Отправлено: 00:56, 13-09-2021 | #7


Ветеран


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

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


alpap, а что будет, если потом опять создадут image(1).png, image(2).png, …?

Отправлено: 19:49, 13-09-2021 | #8


Ветеран


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

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


Цитата Iska:
если потом опять »
мой код для причесывания, соответственно разово, а в дальнейшем надо создавать как положено. Но можно и повторить, если опять на грабли. Этот код найдет и переименует именно этот же файл, скажем так исправит его имя на правильное.
А, имеется ввиду что после причесывания наступаем на грабли в этой папке - ну надо не допускать ошибок, если доверили руль, надо не просто доехать, а и машину не разбить и не задавить никого.

Отправлено: 05:46, 14-09-2021 | #9


Ветеран


Contributor


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

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


Цитата Iska:
а что будет, если потом опять создадут image(1).png, image(2).png, …? »
Ключевое слово: потом. Всё таки, ИМХО, надо не отвечать на вопрос, как он поставлен, а пытаться въехать в задачу. ИМХО (мои домыслы) второй файл не может быть создан ранее первого. Поэтому надо не изменять то, что в скобках (1) (2) и т д., а переименовывать все файлы чохом в сортировке по времени
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "Name=тра ля ля"
	Set "Ext=png"
	Set /A Len=4
	
	Pushd "%BoxIn%" ||(Echo Folder "%BoxIn%" not found &Pause &Exit /B 1) 
	
	Set /A Num=100000000
	For /F "usebackq tokens=2 delims=()" %%n In (`2^>nul Dir "%BoxIn%\%Name%(*).%Ext%" /B /A:-D /O:D`) Do (
		Set /a Num+=1
		Call Ren "%Name%(%%n).%Ext%" "tmp.%Name%(%%Num:~-%Len%%%).%Ext%"
	)
	For /F "usebackq tokens=1* delims=." %%i In (`2^>nul Dir "%BoxIn%\tmp.%Name%(*).%Ext%" /B /A:-D`) Do Ren "tmp.%%j" "%%j"
	Popd
Pause		
Exit /B

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

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

Отправлено: 10:00, 14-09-2021 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Пакетное удаление файлов Latinyanin Хочу все знать 8 17-05-2021 16:16
Любой язык - [решено] Пакетное переименование файлов в случайное имя brosafari Скриптовые языки администрирования Windows 3 17-01-2017 21:29
CMD/BAT - Пакетное переименование файлов по маске Viktor99 Скриптовые языки администрирования Windows 1 15-08-2016 23:25
CMD/BAT - [решено] Пакетное переименование файлов ArsenBespalov Скриптовые языки администрирования Windows 9 11-08-2016 03:56
Пакетное преобразование файлов PCLAlex AutoIt 1 21-06-2011 10:09




 
Переход