Есть ли способ, которым я могу массово удалить часть имени файла для 900ish файлов? - PullRequest
0 голосов
/ 28 сентября 2019

Нужен способ удалить части имени файла.

Пробовал некоторые базовые функции блокнота ++ lol

https://i.imgur.com/SM8QbWq.jpg

Изображение показывает в основном то, что мне нужно!

например,

sevenberry_island_paradise-SB-4131D1-4-S5090015 (.jpg) - sevenberry_island_paradise-SB-4131D1-4 (.jpg)

Коды позиций после SB-например, 4131D1-4, все, что после этого я не хочу.

Любой способ удалить это из всех этих файлов будет огромной огромной помощью !!

Спасибо !!

1 Ответ

0 голосов
/ 28 сентября 2019

Вопрос не подходит, поскольку опубликован, и вам необходимо опубликовать то, что вы пробовали, и попросить помощи с вашим собственным кодом и любыми сообщениями об ошибках или неожиданными результатами, с которыми вы столкнулись.Тем не менее, я вижу вашу проблему, и было забавно найти решение, поэтому я сделал это.

Этот код найдет все файлы в указанном каталоге (вы можете добавить параметр -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)"
}
...