Вопрос не подходит, поскольку опубликован, и вам необходимо опубликовать то, что вы пробовали, и попросить помощи с вашим собственным кодом и любыми сообщениями об ошибках или неожиданными результатами, с которыми вы столкнулись.Тем не менее, я вижу вашу проблему, и было забавно найти решение, поэтому я сделал это.
Этот код найдет все файлы в указанном каталоге (вы можете добавить параметр -Recurse
в строку Get-ChildItem
, чтобы получить файлы во всех подкаталогах) и переименовать их все, удалив конец имени файла, используя RegEx.
Сделайте копию ваших файлов перед попыткойэто.Я старался изо всех сил создать решение, которое будет работать с именами файлов, которые вы изобразили, но если имена файлов сильно отличаются от тех, которые изображены, у вас могут быть непредвиденные результаты. Сначала сделайте резервную копию.
# Specify the path in which all of your jpgs are stored
$path = 'C:\Path\To\Jpgs'
# Get all of the files we want to change, and only return files that have the .jpg extension
$jpgs = Get-ChildItem -Path "$path" <#-Recurse#> | Where-Object {$_.Extension -eq '.jpg'}
# Perform the same steps below on every file that we got above by using foreach
foreach ($jpg in $jpgs) {
# Store the original file name in a variable for working on
[string]$originalBaseName = "$($jpg.BaseName)"
# Use RegEx to split the file name
[string]$substringToReplace = ($originalBaseName -split '-[0-9]+-')[1]
# Re-add the '-' to the string which you want to remove from the file name
[string]$substringToReplace = '-' + $substringToReplace
# Remove the portion of the file name you want gone
[string]$newBaseName = $originalBaseName -replace "$substringToReplace",''
# Rename the file with the new file name
Rename-Item -Path "$($jpg.FullName)" -NewName "$newBaseName$($jpg.Extension)"
}