Как массово переименовать файлы из двух разных папок?
Здравствуйте.
Подскажите, пожалуйста, решение для массового переименования файлов.
В папке №1 хранится музыкальная база данных, которая имеет определенный вид:
MKDL10123_Pupko, Ivan_-_Track 1.wav
MKDL10144_Prosto, Kostya_-_Track 2.wav
MKDL10147_Good, Man_-_Track 352.wav
В папке №2 хранятся файлы расширения программы, которые имеют следующий вид:
MKDL10123.wav_dig
MKDL10123.wav_env
MKDL10144.wav_dig
MKDL10144.wav_env
MKDL10147.wav_dig
MKDL10147.wav_env
Задача: сделать так, чтобы все файлы из папки №2 данных приняли следующий вид:
MKDL10123_Pupko, Ivan_-_Track 1.wav_dig
MKDL10123_Pupko, Ivan_-_Track 1.wav_env
MKDL10144_Prosto, Kostya_-_Track 2.wav_dig
MKDL10144_Prosto, Kostya_-_Track 2.wav_env
MKDL10147_Good, Man_-_Track 352.wav_dig
MKDL10147_Good, Man_-_Track 352.wav_env
Музыкальная база насчитывает более 5 тысяч файлов, ручками работать не хочется.
Наверняка, в Total Commander или средствами Windows можно как-то массово переименовать файлы. Буду рад, если кто-то подскажет/поможет осуществить задачу. Заранее спасибо!
Большое спасибо вам за помощь в написании скрипта! Сегодня на досуге обязательно почитаю о возможностях PowerShell и попытаюсь разобраться в данном коде (что за что отвечает).
Pavel Pavel, foreach это цикл, который производит определенные действия над каждым из объектов содержащихся в массиве, по очереди, пока не переберет их все. В переменной $folder2 содержатся имена всех файлов из папки в которой требуется переименовать файлы и цикл их берет по 1 и обрабатывает.
Цикл берет имя первого файла из переменной $folder2 и записывает его значение в переменную $fold
$tmp = берет имя файла который в данный момент обрабатывается и отбрасывает у него расширение, все что справа от точки и записывает в переменную $tmp
$tmp2 = берет список имен файлов из папки 1, из которой он будет брать новые имена для файлов и ищет в ней имя файла которое содержит значение $tmp и записывает в переменную $tmp2
$tmp3 = берет имя файла который в данный момент обрабатывается и отбрасывает все что слева от точки получая расширение файла и записывает в $tmp3
$newname = подготавливает новое имя файла собирая его из $tmp2 и расширения текущего файла $tmp3
Rename-Item производит переименование файла в директории 2 с именем текущего обрабатываемого файла на новое имя из переменной $newname
Затем цикл берет следующий файл и обрабатывает его так же, и так пока не обработает все файлы
Я пользуюсь Advanced Renamer, может помочь. Там много чего можно наворотить.
Хотя у вас какой-то очень странный кейс, как программа должна догадаться, во что переименовывать конечный файл, по первым цифрам? Думаю, что это самому писать надо скрипт...