2016-05-10 13 views
0

Я пытаюсь создать действие «Папка» в Automator на Mac, где, когда новый файл удаляется в мою указанную папку, открывается диалоговое окно с вопросом, в какой файл я вхожу - то, основываясь на этом выборе, автоматически переименует его в обратный диалог и, в идеале, переменную сегодняшней даты (оставляя одно и то же расширение).AppleScript: использование диалога Возврат к файлу переименования

Довольно новый для AppleScripts, но это то, что я до сих пор, который не дает мне никаких ошибок, но и ничего не делает:

on run 
    set theChoice to {"Option1", "Option2", "Option3", "Option4", "Other"} 
    set selected to {choose from list theChoice} 
    if selected is "Option1" then 
     tell application "Finder" 
      set currentFile to name of (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option1" & "." & name extension of currentFile 
     end tell 
    else if selected is "Option2" then 
     tell application "Finder" 
      set currentFile to name of (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option2" & "." & name extension of currentFile 
     end tell 
    else if selected is "Option3" then 
     tell application "Finder" 
      set currentFile to name of (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option3" & "." & name extension of currentFile 
     end tell 
    else if selected is "Option4" then 
     tell application "Finder" 
      set currentFile to name of (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option4" & "." & name extension of currentFile 
     end tell 
    else 
     tell application "Finder" 
      set currentFile to name of (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to alias & "." & name extension of currentFile 
     end tell 
    end if 
end run 

После выясняя эту часть, что я также надеялся добавить текущую дату (например, «_20160510») в конце каждого имени файла, поэтому, если это возможно, это также будет здорово.

+1

Вы только изменили название временной переменной 'currentFile'. Вероятно, вам нужно что-то вроде 'set name (selection as alias) to currentFile' в качестве последнего шага. –

+0

@PaulR Спасибо - я пытался сказать 'приложения "Finder" \t \t \t набор CurrentFile на имя (выбор в качестве псевдонима) \t \t \t набор currentName на имя CurrentFile \t \t \t набор имя CurrentFile к "Option1" & "." И расширение имен CurrentFile \t \t \t набор имя (выбор в качестве псевдонима) для CurrentFile \t \t конец tell', но это, похоже, не делать ничего. – Ryan

ответ

2

Я отредактировал свой быстрый ответ. Могут быть и другие проблемы. Я должен посмотреть на это чуть позже. Но это, похоже, работает. Вам нужно будет лучше изолировать небольшие разделы кода, прежде чем вкладывать слишком много. Убедитесь, что вы знаете, что что-то возвращает в первую очередь.

Ознакомьтесь с различиями между исходным кодом и этим. Вы заметите, что

Я добавил «без выбора нескольких»

Вам не нужно ставить choose from list в другом списке, поэтому я изменил это, и избавились от «1 пункта 1 "потому что теперь выбран простой список

Я вынул лишние„имя“

я вставил, если/то, чтобы покрыть для отмены (который возвращает ложь)

on run 
set theChoice to {"Option1", "Option2", "Option3", "Option4", "Other"} 
set selected to (choose from list theChoice without multiple selections allowed) 

if selected is not false then 
    if item 1 of selected is "Option1" then 
     tell application "Finder" 
      set currentFile to (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option1" & "." & name extension of currentFile 
     end tell 
    else if item 1 of selected is "Option2" then 
     tell application "Finder" 
      set currentFile to (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option2" & "." & name extension of currentFile 
     end tell 
    else if item 1 of selected is "Option3" then 
     tell application "Finder" 
      set currentFile to (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option3" & "." & name extension of currentFile 
     end tell 
    else if item 1 of selected is "Option4" then 
     tell application "Finder" 
      set currentFile to (selection as alias) 
      set currentName to name of currentFile 
      set name of currentFile to "Option4" & "." & name extension of currentFile 
     end tell 
    else 
     tell application "Finder" 
      set currentFile to (selection as alias) 
      set currentName to name of currentFile 
      --set name of currentFile to alias & "." & name extension of currentFile 
      --what is it you want to do here?? 
     end tell 
    end if 
end if 

конец запустить

[EDIT]

Для предложений в добавлении ведущих нулей на сегодняшний день цифры, см http://www.foodoo.sunreal.com.au/info/date_info.html это старый, но все-таки необходимо. Кроме того, рассмотреть (если это возможно), используя команду do shell script, как:

do shell script "date +\"%m-%d-%y-%H-%M-%S\"" 

который будет возвращать что-то вроде

"05-12-16-11-46"

(См. http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/)

Что касается использования этого материала в Automator, это может помочь узнать, что вы делаете в Automator.

+0

Спасибо! По-прежнему нужно выработать некоторые ошибки, но вы определенно сделали это ближе. Первая проблема заключается в том, что иногда это не работает? Но иногда это происходит. Поэтому мне придется вникать в это немного больше, чтобы увидеть, есть ли образец. Но во-вторых, когда он работает, похоже, что он втягивает петлю? Я выберу «Option1» и (когда он будет работать), он отлично изменит имя файла на Option1, но затем снова откроется диалоговое окно? И кажется, что я могу постоянно менять имя между всеми параметрами, пока я не выберу его дважды подряд. – Ryan

+0

Я внес изменения в ответ. И снова отредактировав b/c, я оставил одно из этих «имен» в конце раздела 'else'. – CRGreen

+0

@Ryan Не уверен, что вы пытаетесь сделать с частью 'else', на самом деле. Не могли бы вы объяснить, почему это происходит? Это не работает, но нам нужно знать, каково ваше намерение. – CRGreen

0

Это сокращенный вариант сценария с кратким изложением избыточного кода

set theChoice to {"Option1", "Option2", "Option3", "Option4", "Other"} 
set selected to {choose from list theChoice} 
if theChoice is false then return 
set chosen to item 1 of theChoice 

tell application "Finder" to set theSelection to selection 
if theSelection is {} then return 
set currentFile to item 1 of theSelection 

set currentDate to do shell script "date +%Y%d%m" 

if chosen is "Other" then 
    tell application "Finder" 
     -- do something with "Other" 
    end tell 
else 
    tell application "Finder" 
     set name of currentFile to chosen & "_" & currentDate & "." & name extension of currentFile 
    end tell 
end if 
+0

Спасибо! Это намного чище. Я тестировал это, хотя, и когда я добавляю в AppleScript, по крайней мере синтаксис хорош, но когда я помещаю его в Automator, он говорит: «Невозможно установить выбранное значение {выбрать из списка theChoice}. Доступ не разрешен. «И когда я вернул свой старый скрипт, он говорит:« Невозможно установить выбранный для выбора из списка TheChoice без разрешения нескольких вариантов. Доступ не разрешен. «Все, что я делаю в Automator, использует его для действия с папкой - остальное - это только этот код. Есть идеи? Не видел этого раньше. – Ryan