2017-08-30 12 views
1

私は画像のファインダーサービスとして追加されたこのAutomatorを持っています。2つの項目を入力して、オートマラー内のシェルスクリプトに入力します

すべては、ユーザーが一連の画像を選択し、サービスメニューでスクリプトを選択することから始まります。

スクリプトは、最初のユーザーに二つの質問を尋ねる:

on run {input, parameters} 
    choose from list {"iPhone", "iPad", "Mac"} with prompt "Choose Platform" 
    set platform to the result as string 

    display dialog "Choose File Name" default answer "" 
    set fileName to the result as string 

    // here it goes the magic line 

    return input 
end run 

場で私がアレイ上の2つのエントリとしてplatformfileNameを追加する行を追加します(「ここでは、それは魔法のラインを行きます」 ?)?AppleScriptに続くシェルスクリプトに渡されるパラメータ(input?)。

シェルスクリプトは、これらの行を持つことになります。

platform=$1 
shift 

fileName=$1 
shift 

for f in "[email protected]"; do 

    // files will be processed here 

私はシェルスクリプトがそれを受信する方法がわからないけど、私の知る限り配列のようなものを受け取ることになっている理解し、構成しますプラットフォーム、ファイル名、選択されたファイルのリストの3つの項目から構成されています。私はシフトが入力の冒頭でアイテムを削除することを理解します。

set beginning of input to platform as string and fileName as string 

とも

set beginning of input to platform 
set beginning of input to fileName 
//hoping it will push platform to the second position 

が、どれも働いていない:私はこれらの行を試してみました。そのため

任意のアイデア

答えて

1

これはあなたのための魔法の世話をする必要があります。

on run {input, parameters} 
    set platform to (choose from list {"iPhone", "iPad", "Mac"} with prompt "Choose Platform") as string 
    set fileName to text returned of (display dialog "Choose File Name" default answer "") as string 
    set tempList to {} 
    set end of tempList to platform 
    set end of tempList to fileName 
    repeat with i from 1 to count of input 
     set end of tempList to item i of input 
    end repeat 
    copy tempList to input 
    return input 
end run 

これはあまりにも動作しますが、私はちょうどそれをテスト:

on run {input, parameters} 
    set platform to (choose from list {"iPhone", "iPad", "Mac"} with prompt "Choose Platform") as string 
    set fileName to text returned of (display dialog "Choose File Name" default answer "") as string 
    set beginning of input to fileName 
    set beginning of input to platform 
    return input 
end run 

注意これは単なる例であることコードであり、エラー処理を使用しません。

この使用例では、リストにアイテムを1つずつ追加する必要があると思います。

+0

ブリリアント!感謝!!!!!!!!!!!!! – SpaceDog

+0

@SpaceDogあなたが「プラットフォームへの入力の開始を設定しよう」と言ったので、私はテストを気にせず、逆のコースを取っただけです。しかし、私はちょうど 'set input to platform'の次の行に続いて' set input to fileName'をテストしたところ、私のために働いていました。結果は '{" iPhone "、" hello world "、エイリアス" Macintosh HD:Temp:image file 2.png "、別名" Macintosh HD:Temp:imagefile1.png "}'です。その後、Run Shell Scriptが期待どおりに動作しました。なぜそれがあなたの仕事をしていないのか分かりません。 – user3439894

+0

それは変だけど私の解決策はうまくいかなかった。 – SpaceDog

関連する問題