2016-09-03 3 views
0

Я пытаюсь создать сценарий или автоматизировать unrar, чтобы разделить выбранный файл на определенную папку (жестко закодированную).Запустить скрипт в выбранном файле

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

unrar e <path_to_selected_file.rar> <hard_coded_path> 

Как я могу сделать это наилучшим образом?

+0

Возможный дубликат ответа на SuperUser - [Как выполнить сценарий оболочки с выбранными файлами/папками в поиске?] (Http://superuser.com/q/154726) – kabiroberai

+0

http://superuser.com/a/596271 –

ответ

0

Если ваш путь назначения жестко запрограммирован, то я предлагаю вам использовать Automator. Сначала создайте службу. Выберите сверху, «получите файл» в приложении «Finder». Затем добавьте только одно действие: «запустите Applescript».

В этом действии сценарий по умолчанию начинается с переменной «input». Эта переменная будет содержать список всех выбранных файлов, когда вы делаете правый щелчок по ним в Finder. Создайте свой скрипт для прокрутки файлов из этого списка, используя функцию POXIS для преобразования пути поиска (myUser: myfolder: myfile) к пути оболочки (myUser/myfolder/myfile). С помощью этого пути используйте команду «make shell script» для запуска вашего «unbar» скрипта.

При сохранении и тестировании вы также можете определить комбинацию клавиш для этой Службы (в Системных настройках).

Вот скрипт, который должен быть в вашем действии AppleScript:

on run {input, parameters} 
set Destination to path to desktop folder -- User Desktop by default. can be changed  
set PosixDest to POSIX path of Destination 

set SelectedFiles to input 
repeat with myFile in SelectedFiles -- loop through each selected file 
    set PosixF to POSIX path of myFile -- convert Finder path to Unix path 
    try -- try block to handle error during unbar 
     do shell script "unrar e " & (quoted form of PosixF) & " " & (quoted form of PosixDest) 
    end try 
end repeat -- next file 

return input 
end run 

Этот пример работает до тех пор, как вы выберите сжатый файл (принять отпирать команду). Чтобы быть более безопасным, вы должны просто добавить тест в свой файл, чтобы проверить, является ли файл файлом ОК для запрета. Если нет, просто ничего не делайте.

+0

Я не понимаю, как я должен использовать [input] внутри сценария оболочки, а также мой путь содержит пробелы и «!». что у applescript, кажется, есть проблема, как я могу справиться с этим? – Thomas

+0

ответ обновлен с помощью примера скрипта – pbell

Смежные вопросы