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

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

Ответить
Настройки темы
CMD/BAT - Пакетное переименование файлов(.jpg) в разных папках (BAT)

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


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

Профиль | Отправить 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
Благодарности: 15

Профиль | Отправить 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}
}
В переменную $dr прописываете путь корневой директории (диска), где у Вас размещены нужные папки с файлами.
Проверяете правильность переименования сначала в консоли.
Если всё устроит, нужно будет убрать параметр -WhatIf

Отправлено: 11:56, 09-08-2020 | #2



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

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


Ветеран


Contributor


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

Профиль | Отправить 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
Благодарности: 260

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


Если папки одноуровневые, то есть находятся в пределах одного каталога, а также заведомо содержат только по два изображения, задача в pwsh вполне решается однострочником вида:
Код: Выделить весь код
(Get-ChildItem X:\common\asteklo*\*.jpg).ForEach{$x=++$x-eq2?2:1;Move-Item $_.FullName "$($_.Directory)\$($_.Directory.Name)_$x.jpg"}
Так что следует ли от автора ждать подробностей или причитаний, дескать, "копипаст не робит", вопрос.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:41, 09-08-2020 | #4


(*.*)


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

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


См. также Как массово переименовать файлы по маске в PowerShell

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 11:43, 10-08-2020 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход