Удалить несколько разных суффиксов из исходного имени - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть несколько файлов, которые имеют один и тот же файл с тем же расширением, но именем, но могут иметь несколько разных суффиксов.Как мне удалить только суффикс?Я планирую использовать AppleScript для этого, так как он будет работать через Automator.

Например.Apple_xh264_xdcamprofile123.mov Apple_mp4_prores321.mov Apple_xh265_prores456.mov

Как удалить суффикс, будь то имя файла, содержащее эти суффиксы, и сохранить только имя и расширение.

Ожидаемый результат.Apple_xh264.mov Apple_mp4.mov Apple_xh265.mov

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Другим предложением является использование разделителей текстовых элементов Applescript.

Кажется, что ваша строка всегда xxxx_yyyy_zzzz.eee (длина каждой группы не имеет значения!).

Вы можете использовать текстразделители элементов "."и "_", а затем удалите только 3-ю часть текста ("zzzz").Вот что делает обработчик CleanName в скрипте ниже:

set myList to {"Apple_xh264_xdcamprofile123.mov", "Apple_mp4_prores321.mov", "Apple_xh265_prores456.mov"}
set myOutput to {}
repeat with anItem in myList
    set newName to CleanedName(anItem)
    log newName
end repeat
return myOutput


on CleanedName(localOld) -- convert xxxx_yyyy_zzzz.eee into xxxx_yyyy.ee
    set AppleScript's text item delimiters to {".", "_"}
    try
        set localNew to (text item 1 of localOld) & "_" & (text item 2 of localOld) & "." & (text item 4 of localOld)
    on error
        set localNew to ""
    end try
    return localNew
end CleanedName

Блок Try на тот случай, если некоторые имена ваших файлов не соответствуют ожидаемому формату.Вы можете использовать CleanedName непосредственно в цикле Automator, просматривая все файлы

0 голосов
/ 10 апреля 2019

Вы можете искать символы-разделители в конце строки (последнее вхождение) и использовать смещения для создания нового имени:

set input to {"Apple_xh264_xdcamprofile123.mov", "Apple_mp4_prores321.mov", "Apple_xh265_prores456.mov"}
set output to {}

repeat with anItem in the input
  set reversed to (reverse of items of anItem as text) -- search from end
  if (offset of "_" in reversed) is 0 then -- suffix marker not found
    set end of output to anItem
  else
    set extension to text -1 thru -(offset of "." in reversed) of anItem
    set newName to text 1 thru -((offset of "_" in reversed) + 1) of anItem
    set end of the output to newName & extension
  end if
end repeat
return output
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...