« フォルダのロック | トップページ | [考察]$HOME/Library/Containers/以下のファイル操作(削除) »

フォルダのロック解除


あくまでも参考にしてください

【スクリプトエディタで開く】 |

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use scripting additions
010property refMe : a reference to current application
011
012
013#############################
014###ダイアログを前面に出す
015set strName to (name of current application) as text
016if strName is "osascript" then
017  tell application "Finder" to activate
018else
019  tell current application to activate
020end if
021#デフォルトロケーション
022set appFileManager to refMe's NSFileManager's defaultManager()
023set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
024set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
025set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
026#ダイアログ フォルダ選択
027set strMes to "フォルダを選んでください" as text
028set strPrompt to "フォルダを選択してください" as text
029try
030  set listAliasFolderPath to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation with multiple selections allowed without invisibles and showing package contents)
031on error
032  log "エラーしました"
033  return "エラーしました"
034end try
035
036repeat with objAliasFolderPath in listAliasFolderPath
037  #パス
038  set aliasFolderPath to objAliasFolderPath as alias
039  set strDirPath to (POSIX path of aliasFolderPath) as text
040  set ocidDirPathStr to (refMe's NSString's stringWithString:(strDirPath))
041  set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
042  set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:false)
043  ###処理実行 ロック解除
044  set listDone to doDirUnLock(ocidDirPathURL)
045  ###処理実行 ロック
046  # set listDone to doDirLock(ocidDirPathURL)
047  #結果
048  if (item 2 of listDone) ≠ (missing value) then
049    set strDirPath to (ocidDirPathURL's |path|()) as text
050    set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
051    #
052    set strMes to ("【エラー】\n" & strDirPath & "\n" & strErrorMes) as text
053    try
054      set recordResponse to display alert strMes buttons {"続行", "中止"} default button "続行" cancel button "中止" as informational giving up after 10
055    on error
056      log "キャンセルしました"
057      exit repeat
058    end try
059    if true is equal to (gave up of recordResponse) then
060      log "時間切れですやりなおしてください"
061      exit repeat
062      error number -128
063    end if
064  else if (item 1 of listDone) is true then
065    log "正常終了 : " & (ocidDirPathURL's |path|()) as text
066  end if
067  
068end repeat
069
070
071
072############################
073#フォルダのロックを解除
074############################
075
076to doDirUnLock(argDirURL)
077  #URLをパスにして
078  set ocidDirPath to argDirURL's |path|()
079  #ロック設定 false
080  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
081  ocidAttrDict's setValue:(false) forKey:(refMe's NSFileImmutable)
082  #設定する
083  set appFileManager to refMe's NSFileManager's defaultManager()
084  set listDone to appFileManager's setAttributes:(ocidAttrDict) ofItemAtPath:(ocidDirPath) |error| :(reference)
085  #結果を戻す
086  return listDone
087end doDirUnLock
088
089
090############################
091#フォルダのロック
092############################
093
094to doDirLock(argDirURL)
095  #URLをパスにして
096  set ocidDirPath to argDirURL's |path|()
097  #ロック設定 true
098  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
099  ocidAttrDict's setValue:(true) forKey:(refMe's NSFileImmutable)
100  #設定する
101  set appFileManager to refMe's NSFileManager's defaultManager()
102  set listDone to appFileManager's setAttributes:(ocidAttrDict) ofItemAtPath:(ocidDirPath) |error| :(reference)
103  #結果を戻す
104  return listDone
105end doDirLock
AppleScriptで生成しました

|

« フォルダのロック | トップページ | [考察]$HOME/Library/Containers/以下のファイル操作(削除) »

AppleScript Folder」カテゴリの記事