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

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

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

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


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

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


Всем добрый день, использую bat для некоторой оптимизации рабочего процесса, очень выручает! Много решений нашла на данном форуме, но сама, к сожалению не пишу, сейчас появилась потребность в батнике, который переименовывает файлы по имени главной папки, т.е.

у нас есть главная папка "12345" (таких,
в ней лежит 3 папки с разными названиями (мама, папа, дочь), в них лежат файлы p4154_1.png, p4154_2.png, p4154_3.png и тд (имена файлов могут быть разной длины, но у всех есть счетчик _1, _2 и тд),
также в главной папке рядом с подпапками есть файлы .psd, которые названы p4154_мама.psd, p4154_папа.psd, p4154_дочь.psd.

12345
->p4154_мама.psd
->p4154_папа.psd
->p4154_дочь.psd
->мама
-->p4154_1.png
-->p4154_2.png
-->p4154_3.png
->папа
-->p4154_1.png
-->p4154_2.png
-->p4154_3.png
->дочь
-->p4154_1.png
-->p4154_2.png
-->p4154_3.png


Необходим bat, который я буду класть в главную папку, он будет брать название этой главной папки (она всегда находится на уровень выше файлов расположенных в ней) и менять название каждого файла .png и .psd на название главной папки, при этом всё что после нижнего подчеркивания (включая и его) должно сохраниться, т.е. на выходе будет

12345
->12345_мама.psd
->12345_папа.psd
->12345_дочь.psd
->мама
-->12345_1.png
-->12345_2.png
-->12345_3.png
->папа
-->12345_1.png
-->12345_2.png
-->12345_3.png
->дочь
-->12345_1.png
-->12345_2.png
-->12345_3.png

Надеюсь понятно объяснила, если что извините, я впервые прошу помощи, просто ничего похожего не смогла найти ((( Буду очень благодарна за помощь!

Отправлено: 16:34, 17-07-2023

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell
Код: Выделить весь код
$folder = $PSScriptRoot -replace '.*\\'

dir -Include "*.png","*.psd" -Recurse |? basename -match '_.+$' |% {
    Rename-Item $_ ($folder+"_"+$_.basename.Split('_')[-1]+$_.extension) -WhatIf
}
pause
Скопируйте код в файл script.ps1 и запускайте его ПКМ -> Выполнить с помощью Powershell.
После проверки корректности переименований (код изначально только выводит информацию) уберите из кода -WhatIf и pause

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 21:09, 17-07-2023 | #2



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

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


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


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

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


Цитата DJ Mogarych:
Powershell
Код:
$folder = $PSScriptRoot -replace '.*\\'
dir -Include "*.png","*.psd" -Recurse |? basename -match '_.+$' |% {
Rename-Item $_ ($folder+"_"+$_.basename.Split('_')[-1]+$_.extension) -WhatIf
}
pause
Скопируйте код в файл script.ps1 и запускайте его ПКМ -> Выполнить с помощью Powershell.
После проверки корректности переименований (код изначально только выводит информацию) уберите из кода -WhatIf и pause »
Супер, впервые использую Powershell и это божественно! Всё прекрасно работает, вы оптимизировали мне очень нудный процесс, огромное человеческое спасибо!!!

Отправлено: 22:55, 17-07-2023 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование файлов по имени Arsenik77 Скриптовые языки администрирования Windows 6 30-10-2017 22:14
CMD/BAT - Пакетное переименование файлов на основе заданного списка Stalker_AleX333 Скриптовые языки администрирования Windows 5 01-08-2017 17:28
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




 
Переход