Простите, если я плохо объясню, я очень плохо знаком с PowerShell.
Я пытаюсь очистить свои медиа-файлы и пытаюсь удалить все символы после указанной строки из нескольких файлов с помощью все подкаталоги каталога.
Длина имени файла не будет согласованной. Но типы файлов будут. Мне также нужно исключить расширение для удаления.
Таким образом, файлы будут выглядеть примерно так:
- TVshow S01 E01 Название эпизода.mp4
- LongerTVShow S03 E01 Название episode.mp4
Я хочу удалить все после E01, сохраняя при этом E01
Результат:
- TVshow S01 E01.mp4
- LongerTVShow S03 E01.mp4
В настоящее время у меня есть несколько других строк, которые очищают указанные мной символы, например, нахождение периодов и замена их пробелами:
get-childitem -recurse | dir -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace('.',' ') + $_.Extension }
Это хорошо работает, так как будет применяться ко всем файлам в каталоге. Но вам нужно указать символ для замены.
Тогда я просто собирался использовать несколько экземпляров команды для E01, E02, E03 и c. Таким же образом я удаляю несколько строк, как в приведенном ниже коде:
get-childitem -recurse | dir -Filter *.txt | Rename-Item -NewName { $_.BaseName.replace('1080p','').replace('720p','').replace('HD','') + $_.Extension }
Я надеялся использовать что-то в том же духе, я видел предложения по обрезке или расщеплению, но не могу понять я не смог ничего найти.
Спасибо за любые ответы!
Редактировать
Я использовал код AdminOfThings и добавил его в что у меня есть.
get-childitem -recurse |dir -Filter *.mp4 | Rename-Item -NewName { ($_.BaseName -creplace '(?<=S\d+ E\d+)\D.*') + $_.Extension }
Так что, если кому-то понадобится что-то подобное в будущем, это переименует любые файлы .mp4 в каталоге и во все подкаталоги, в которых он запущен. c. В результате:
- TvShow S01 E04 title_of_show.mp4
- TvShow S08 E03Title_of_show.mp4
в:
- TvShow S01 E04.mp4
- TvShow S08 E03.mp4
Очень конкретно c, но кто-то может найти это полезным.