|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Пакетное переименование файлов(.jpg) в разных папках (BAT) |
|
CMD/BAT - Пакетное переименование файлов(.jpg) в разных папках (BAT)
|
Новый участник Сообщения: 1 |
Профиль | Отправить PM | Цитировать Смотрите у меня есть папки:
asteklo1, asteklo2, asteklo3, asteklo4... в каждой из них содержится по 2 файла (.jpg) Мне нужен способ (тот же bat), для того чтобы пакетно переименовать все эти файлы (.jpg) -> в название папки и с нижним подчеркиванием с нумерацией файла Пример: папка "asteklo1", в нем должны находится "asteklo1_1" и "asteklo1_2" и так с каждой папкой, кто-то шарит за эту тему? я только создал пакетно все эти папки с разными названиями: for /f %%i in (list.txt) do @md "%%~i" ну естественно и в этом list.txt находились все названия папок строчками |
|
Отправлено: 19:31, 08-08-2020 |
Старожил Сообщения: 216
|
Профиль | Отправить PM | Цитировать Zharkyn, код нужен именно на cmd ? Powershell не подойдёт ?
$dr = 'J:\Download' ForEach ($ln in (Get-ChildItem -Path $dr -Directory -Recurse | Foreach {$_.FullName})) { Get-ChildItem $ln -Include *.jpg -Recurse | Foreach {$i=1} {Rename-Item $_ -NewName ("$($_.Directory.Name)_{0:D1}.jpg" -f $i++) -WhatIf} } Проверяете правильность переименования сначала в консоли. Если всё устроит, нужно будет убрать параметр -WhatIf |
Отправлено: 11:56, 09-08-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать CMD
@Echo Off Set "BoxIn=Z:\Box_In" Set "MaskDir=asteklo*.*" Set "MaskFile=*.jpg" Set "NoReg=.*_[0-9]*.jpg" FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%\%MaskDir%" /B /S /A:D`) DO ( Set /A N=0 FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%%d\%MaskFile%" /B /A:-D`) DO ( FOR /F "usebackq delims=" %%a IN (`Echo %%f^|FINDSTR /E /I /V /R /C:"%NoReg%"`) Do ( Call :MyRen "%%d" "%%a" ) ) ) Exit /B :MyRen Set /A N+=1 If Exist "%~1\%~nx1_%N%%~x2" GoTo :MyRen Ren "%~1\%~2" "%~nx1_%N%%~x2" Exit /B |
------- Отправлено: 15:07, 09-08-2020 | #3 |
Забанен Сообщения: 793
|
Если папки одноуровневые, то есть находятся в пределах одного каталога, а также заведомо содержат только по два изображения, задача в pwsh вполне решается однострочником вида:
Так что следует ли от автора ждать подробностей или причитаний, дескать, "копипаст не робит", вопрос. |
Отправлено: 17:41, 09-08-2020 | #4 |
(*.*) Сообщения: 36491
|
Профиль | Сайт | Отправить PM | Цитировать |
|
------- Отправлено: 11:43, 10-08-2020 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Пакетное переименование файлов на основе заданного списка | Stalker_AleX333 | Скриптовые языки администрирования Windows | 5 | 01-08-2017 17:28 | |
Любой язык - [решено] Пакетное переименование файлов в случайное имя | 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 | |
Любой язык - [решено] Пакетное переименование файлов с отсечением лишнего в имени. | LukAleX | Скриптовые языки администрирования Windows | 3 | 01-08-2016 11:16 |
|