|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник для переименования файлов |
|
CMD/BAT - [решено] Батник для переименования файлов
|
Новый участник Сообщения: 2 |
Уважаемые знатоки! Очень прошу помочь со следующей задачкой: нужен батник для переименования файлов в папке.
Имена файлов нужно заменить на цифры 1.jpg, 2.jpg, 3.jpg .... n.jpg Имена файлов могут быть любые - могут содержать символы % и !. В эти символы я, собственно, и уперся при попытке написать переименовалку самостоятельно: @echo off setlocal for %%i in (*.jpg) do call:ren "%%i" goto:eof :ren set "file=%~1" ren %1 %file:!=% переименовывает все, кроме файлов с символами "%" в названии. Если включаю setlocal enabledelayedexpansion и пробую аналогично убирать из названия %, то не срабатывает на файлах, в которых есть символы "!". Мог бы сделать по-очереди, но встречаются файлы, в которых есть и то и другое - их ничего не берет ![]() Может кто что подскажет? |
|
Отправлено: 00:27, 11-11-2014 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата alpap:
@echo off for /f %%i in ('dir /a-d/b "С:\file\*.mp3"'| find /c /v """') do ( for /l %%j in (1 1 %%i) do ( call ren %%j.mp3 %%j_%%random%%%%random%%.mp3 2>nul ) ) for /f "delims=" %%i in ('"dir /a-d/b *.mp3"') do ( set /a n+=1 ( call set /p="%%n%% "<nul echo %%i )>>.tmp ) for /f "tokens=1*" %%i in ('"type .tmp& del .tmp"') do ( ren "%%j" %%i.mp3 ) exit /b |
|
Отправлено: 18:30, 29-11-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать как минимум:
Цитата temphard:
а вообще очень сумбурно код написан, лучше если вы озвучите свою задачу и в деталях, мы поможем написать код и правильно и красиво. |
|
Отправлено: 21:10, 29-11-2019 | #12 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 21:16, 29-11-2019 | #13 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Скрытый текст
@echo off for /f %%i in ('"dir /a-d/b *.mp3| find /c /v """') do ( for /l %%j in (1 1 %%i) do ( call ren %%j.mp3 %%j_%%random%%%%random%%.mp3 2>nul ) ) for /f "delims=" %%i in ('"dir /a-d/b *.mp3"') do ( set /a n+=1 ( call set /p="%%n%% "<nul echo %%i )>>.tmp ) for /f "tokens=1*" %%i in ('"type .tmp& del .tmp"') do ( ren "%%j" %%i.mp3 ) exit /b Батник в каталоге с mp3 файлами работает отлично. Но находясь в другом месте, код не срабатывает. Никак не могу правильно указать путь к каталогу, в котором находятся mp3 файлы, чтобы код их переименовал. Спасибо, если сможете помочь. |
|
Отправлено: 22:50, 29-11-2019 | #14 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Более продвинутый вариант, с подсчётом кол-ва файлов в папке и на этом основании подстановка нулей в начало:
$files = dir 'C:\temp\2' -file $digits = (($files.count -split '') -match "\d").count $c = 1 $files.foreach({ Rename-Item $_.fullname -NewName (("{0:D$digits}" + "$($_.extension)") -f $c++) }) |
------- Отправлено: 23:05, 29-11-2019 | #15 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
|
Отправлено: 23:37, 29-11-2019 | #16 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать temphard,
Цитата temphard:
в моем коде путь указан в переменной, можно задать свой путь или изменив его в переменной непосредственно или задав первым параметром, тогда запускать так: если раскомментировать 3-ю строку (и закомментировать 2-ю, хотя необязательно), то можно вводить путь по запросу, при этом если ничего не ввести, путь, заданный в переменной, останется по-умолчанию. |
|
Отправлено: 01:17, 30-11-2019 | #17 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Цитата temphard:
|
|
------- Отправлено: 08:46, 30-11-2019 | #18 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать temphard, Не хотел встревать, но:
Вот вариант CMD для нумерации вида 1 2 3 ...
Вот вариант CMD для нумерации вида 0001 0002 0003 ..0123 ...
Set "BoxIn=Z:\Box_In" Можно указать её в аргументе в кавычках при вызове скрипта. Например: kuku.bat "D:\tralala\lamca drica ca" Можно создать ярлык на этот скрипт и в проводнике затягивать обрабатываемую папку на него. Но, если в именах файлов есть спецсимволы, берите vbs. |
------- Последний раз редактировалось megaloman, 30-11-2019 в 19:54. Отправлено: 19:43, 30-11-2019 | #19 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Всем спасибо за помощь, для моих нужд ваших предложений более, чем достаточно.
Цитата megaloman:
В случае, если файл с таким именем уже существует, чтобы он перезаписывался. Главное чтобы скрипт работал быстро. То есть для меня нет так важно, чтобы все файлы были пронумерованы, но чтобы один mp3 файл точно имел имя 1.mp3 Дело в том, что файл 1.mp3 постоянно удаляется (это так надо) и тем не менее такой файл должен всё время появляться в данном каталоге из числа других mp3 файлов. Не обессудьте, если мои объяснения кажутся странными. |
|
Отправлено: 21:03, 30-11-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] батник для переименования файлов | Pumpik | Скриптовые языки администрирования Windows | 5 | 01-02-2014 20:12 | |
CMD/BAT - [решено] Батник для двойной сортировки и переименования | Nun-Nun | Скриптовые языки администрирования Windows | 20 | 19-01-2012 16:31 | |
Нужна программа для пакетного переименования файлов | gaulle | Хочу все знать | 5 | 18-01-2012 07:30 | |
Прочие - Программы для массового переименования каталогов и файлов | Daiv | Программное обеспечение Windows | 39 | 17-06-2011 16:33 | |
CMD/BAT - [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок | Nun-Nun | Скриптовые языки администрирования Windows | 6 | 14-05-2009 15:45 |
|