後続のAppleScriptの実行の間に変数の値をどのように渡しますか?(スクリプト実行間の永続的な値)


1

私はcronの仕事のように走るというAppleScriptを持っています。このAppleScriptの中では、ブーリアンスイッチのように振る舞う変数(つまりon / off値)があります。その後の実行では、ブール変数の値がon / offであるかどうかに応じて、特定のアクションをとる必要があります。

Q)これが可能な異なる方法は何ですか?(サンプルコードをいただければ幸いです)。

乾杯。


回答)plistファイルやプロパティファイルが適しています。

私を正しい方向に向けてくれたdaviesgeekの名誉です。興味のある人のために私は次のようにヘルパーサブルーチンを書きました:

-- read the plist file
tell application "System Events"
   tell property list file plistfile_path
      tell contents
         set someLocalVariable to value of property list item "someLocalVariable"
      end tell
   end tell
end tell


on create_plist_file(file_path)
    -- create the plist file
    tell application "System Events"
         -- create an empty property list dictionary item
        set the parent_dictionary to make new property list item with properties {kind:record}

        -- create new property list file using the empty dictionary list item as contents
        set this_plistfile to ¬
            make new property list file with properties {contents:parent_dictionary, name:file_path}
            -- add new property list items of each of the supported types
            make new property list item at end of property list items of contents of this_plistfile ¬
                with properties {kind:boolean, name:"someLocalVariable", value:false}
            -- make new property list item at end of property list items of contents of this_plistfile ¬
            --     with properties {kind:string, name:"stringKey", value:"string value"}
    end tell
end create_plist_file



on set_someLocalVariable(bool_val)
    tell application "System Events"
        tell property list file plistfile_path
            tell contents
                set value of property list item "someLocalVariable" to bool_val
            end tell
        end tell
    end tell
end set_wasAllTransfersStarted

回答:


2

次のように.plistファイルに書き込むことができます。

--Empty preference file
set theEmptyPListData to "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict/>
</plist>"

--set preference list path and open with write permissions
set theOutputFolder to path to preferences folder from user domain as string
set thePListPath to theOutputFolder & "AppleScript.plist"
set thePListFile to open for access thePListPath with write permission

--check to see if the plist variable is set
try
    tell application "System Events"
        tell property list file thePListPath
            tell contents
                value of property list item "browser"
            end tell
        end tell
    end tell
on error
    tell application "System Events"
        if not (exists file thePListFile) then
            set webBrowser to the button returned of (display dialog "What web browser to you want to use?
(Choose carefully, as this will not appear again)" buttons {"Safari", "Firefox", "Google Chrome"})

            set eof of thePListFile to 0
            write theEmptyPListData to thePListFile starting at eof

            tell property list file thePListPath
                tell contents
                    set value to {|browser|:webBrowser}
                end tell
            end tell
        end if
    end tell
end try

このスクリプトはユーザーのブラウザを要求し、スクリプトを実行しても保存します。


0

私は通常、~/Library/Caches/またはでテキストファイルを作成するだけです/tmp/

set prev to do shell script "d=~/Library/Caches/me.lri.scripts; mkdir -p $d; touch $d/example; cat $d/example"
set prev to prev & "aa"
do shell script "shopt -u xpg_echo; echo -n " & quoted form of prev & " > ~/Library/Caches/me.lri.scripts/example"
do shell script "cat ~/Library/Caches/me.lri.scripts/example" without altering line endings
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.