Archive

[zip]EPUB XLSX DOCX PPTX用 非圧縮ZIPアーカイブ



解凍したXLXSやPPTXのフォルダの画像に修正入れて戻す時用



AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004(*
005EPUB XLSX PPTX DOCX等
006指定のフォルダから
007非圧縮のZIPでファイルを生成します
008
009*)
010# com.cocolog-nifty.quicktimer.icefloe
011----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
012use AppleScript version "2.8"
013use framework "Foundation"
014use scripting additions
015
016property refMe : a reference to current application
017
018
019###Wクリックで起動した場合
020on run
021  set aliasDefaultLocation to (path to desktop from user domain) as alias
022  set strPromptText to "フォルダをえらんでください\n非圧縮のZIPでファイルを生成します" as text
023  set strMesText to "フォルダをえらんでください\n非圧縮のZIPでファイルを生成します" as text
024  try
025    set listFolderPath to (choose folder strMesText with prompt strPromptText default location aliasDefaultLocation with multiple selections allowed, invisibles and showing package contents) as list
026  on error
027    log "エラーしました"
028    return "エラーしました"
029  end try
030  open listFolderPath
031end run
032
033###ドロップで起動した場合
034on open listFolderPath
035  tell application "Finder"
036    set strKind to (kind of (item 1 of listFolderPath)) as text
037  end tell
038  if strKind is not "フォルダ" then
039    return "フォルダ以外は処理しない"
040  end if
041  ####構造ファイルの名称を取得する
042  repeat with itemFolderPath in listFolderPath
043    set aliasFolderPath to itemFolderPath as alias
044    tell application "Finder"
045      tell folder aliasFolderPath
046        set listContentsAlias to name of every item as list
047        set strDirName to name as text
048      end tell
049    end tell
050    ####コマンドライン用に第一階層の項目をテキストにする
051    set strDirList to ("") as text
052    set strExtension to (missing value)
053    repeat with itemName in listContentsAlias
054      set strItemName to itemName as text
055      set strDirList to (strDirList & "\"" & strItemName & "\" ") as text
056      #拡張子判定
057      if strItemName is "xl" then
058        set strExtension to "xlsx" as text
059      else if strItemName is "ppt" then
060        set strExtension to "pptx" as text
061      else if strItemName is "word" then
062        set strExtension to "docx" as text
063      else if strItemName is "OPS" then
064        set strExtension to "epub" as text
065      end if
066    end repeat
067    if strExtension = (missing value) then
068      return "フォルダの構造に誤りがあります"
069    end if
070    ###
071    #パス
072    tell application "Finder"
073      set aliasContainerDirPath to (container of aliasFolderPath) as alias
074    end tell
075    set strContainerDirPath to (POSIX path of aliasContainerDirPath) as text
076    set strDirPath to (POSIX path of aliasFolderPath) as text
077    #dot_clean実行
078    set theComandText to ("/usr/sbin/dot_clean -n -m  -v  \"" & strDirPath & "\"") as text
079    do shell script theComandText
080    #FindeでDS_Storeを除去
081    set theCmdCom to ("/usr/bin/find \"" & strDirPath & "\" -name \".DS_Store\" -depth -exec rm {} \\;") as text
082    do shell script theCmdCom
083    #移動
084    set strCommandText to ("/usr/bin/cd  \"" & strDirPath & "\"") as text
085    log strCommandText
086    do shell script strCommandText
087    #移動
088    set strCommandText to ("pushd \"" & strDirPath & "\"") as text
089    log strCommandText
090    do shell script strCommandText
091    #圧縮実行
092    set strCommandText to ("pushd \"" & strDirPath & "\" && '/usr/bin/zip' -rX \"../" & strDirName & "." & strExtension & "\" " & strDirList & "") as text
093    log "\r" & strCommandText & "\r"
094    do shell script strCommandText
095    
096  end repeat
097  
098end open
099
100
101
102
AppleScriptで生成しました

|

[Keka]圧縮解凍:Keka

20241009111820_727x414

メインサイト
https://www.keka.io/

GITHUB
https://github.com/aonez/Keka

コマンドラインツールCLI
https://github.com/aonez/Keka/wiki/Terminal-support



[Keka]インストールパッケージのPayloadでファイルタイプがpbzxを解凍する
https://quicktimer.cocolog-nifty.com/icefloe/2024/10/post-a1049e.html

[圧縮解凍ソフト]KEKAインストール(bash)
https://quicktimer.cocolog-nifty.com/icefloe/2024/06/post-ca781c.html

コマンドラインツールCLIは
アクセス権の設定が必要で展開するにはちょっと難易度が高い

|

[Unarchiver]解凍:Unarchiver

20241011044615_1021x228

メインサイト
https://theunarchiver.com/

コマンドラインツール
https://theunarchiver.com/command-line




[Unarchiver] Unarchiverのmobileconfigによる設定
https://quicktimer.cocolog-nifty.com/icefloe/2024/10/post-51b73e.html

[bash]UnarchiverCLIインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/04/post-fad214.html

CLIコマンドラインツールを利用するには
セキュリティの設定が必要で
ユーザーの環境によっては『管理者認証』が必要になります。

初回実行時に警告が出る場合
この警告が出る場合、CLIツールを実行するには管理者権限が必要です
管理者権限が無い場合はCLIツールを利用出来ません。
20241011050502_520x2462

システム環境設定>プライバシーとセキュリティ>アプリケーションの実行許可
20241011050355_1416x277


アプリケーションの実行許可後の初回実行時に
再度警告が出ます
20241011050516_520x342

|

[archiveutility]圧縮解凍:Archive Utility

バンドルIDは
com.apple.archiveutility
リソースフォークやファイルの属性を保持した圧縮ができるので
Mac間でのファイルのやりとりには重宝する
Archive Utility 関連詰め合わせ
https://quicktimer.cocolog-nifty.com/icefloe/files/archive20utility.zip



場所
20241011051815_1494x718



設定
20241011051941_848x340

[bash]アーカイブユーティリティ設定
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-9171f8.html

[mobileconfig]アーカイブユーティリティ
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-c33181.html



[アーカイブユーティリティ]アーカイブユーティリティ.appで圧縮する
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-1cade1.html

[アーカイブユーティリティ]アーカイブユーティリティ.appで圧縮する(複数ファイルを個別)
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-556622.html

[アーカイブユーティリティ]アーカイブユーティリティ.appで圧縮する(フォルダを圧縮)
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-11044e.html

|

[Unarchiver] Unarchiverのmobileconfigによる設定

入手先によってバンドルIDが異なるので
利用中のバンドルIDを確認します
サイト
com.macpaw.site.theunarchiver

AppleStore
cx.c3.theunarchiver


サンプルコード

サンプルソース(参考)
行番号ソース
001<dict>
002
003<key>OnboardingUserViewedWelcomeSlide</key>
004<true />
005<key>SUEnableAutomaticChecks</key>
006<true />
007<key>TUConfigInformationBannerOpened</key>
008<true />
009<key>TUConfigInformationBannerViewedCount</key>
010<integer>0</integer>
011<key>createFolder</key>
012<integer>2</integer>
013<key>deleteExtractedArchive</key>
014<true />
015<key>extractionDestination</key>
016<integer>1</integer>
017<key>filenameEncoding</key>
018<integer>8</integer>
019<key>folderModifiedDate</key>
020<integer>2</integer>
021<key>isFreshInstall</key>
022<true />
023<key>openExtractedFolder</key>
024<true />
025<key>userAgreedToNewTOSAndPrivacy</key>
026<true />
027
028<key>PayloadDisplayName</key>
029<string>The Unarchiver (サイトからダウンロード)</string>
030<key>PayloadIdentifier</key>
031<string>com.macpaw.site.theunarchiver.BBBBBBB-BBBBB-BBBBB-BBBBB-BBBBBBBBBB</string>
032<key>PayloadType</key>
033<string>com.macpaw.site.theunarchiver</string>
034<key>PayloadUUID</key>
035<string>BBBBBBB-BBBBB-BBBBB-BBBBB-BBBBBBBBBB</string>
036<key>PayloadVersion</key>
037<integer>1</integer>
038
039</dict>
AppleScriptで生成しました


サンプルコード

サンプルソース(参考)
行番号ソース
001
002
003<dict>
004
005<key>OnboardingUserViewedWelcomeSlide</key>
006<true />
007<key>SUEnableAutomaticChecks</key>
008<true />
009<key>TUConfigInformationBannerOpened</key>
010<true />
011<key>TUConfigInformationBannerViewedCount</key>
012<integer>0</integer>
013<key>createFolder</key>
014<integer>2</integer>
015<key>deleteExtractedArchive</key>
016<true />
017<key>extractionDestination</key>
018<integer>1</integer>
019<key>filenameEncoding</key>
020<integer>8</integer>
021<key>folderModifiedDate</key>
022<integer>2</integer>
023<key>isFreshInstall</key>
024<true />
025<key>openExtractedFolder</key>
026<true />
027<key>userAgreedToNewTOSAndPrivacy</key>
028<true />
029
030<key>PayloadDisplayName</key>
031<string>The Unarchiver (アプストアからインストール)</string>
032<key>PayloadIdentifier</key>
033<string>cx.c3.theunarchiver.AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAA</string>
034<key>PayloadType</key>
035<string>cx.c3.theunarchiver</string>
036<key>PayloadUUID</key>
037<string>AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAA</string>
038<key>PayloadVersion</key>
039<integer>1</integer>
040</dict>
AppleScriptで生成しました

|

[Keka]インストールパッケージのPayloadでファイルタイプがpbzxを解凍する

/usr/sbin/pkgutil --expand-fullで解凍もれが発生した場合
普通はアーカイブユーティリティで解凍できるが
pbzx形式の場合解凍できない場合がある
その場合は
kekaが有効
20241009111421_1086x908


20241009111820_727x414

|

[Keka][圧縮解凍ソフト]KEKAインストール(bash)


サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004###管理者インストールしているか?チェック
005USER_WHOAMI=$(/usr/bin/whoami)
006/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
007###実行しているユーザー名
008CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
009/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
010###実行しているユーザー名
011HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
012/bin/echo "実行ユーザー(HOME): $HOME_USER"
013###logname
014LOGIN_NAME=$(/usr/bin/logname)
015/bin/echo "ログイン名(logname): $LOGIN_NAME"
016###UID
017USER_NAME=$(/usr/bin/id -un)
018/bin/echo "ユーザー名(id): $USER_NAME"
019###STAT
020STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
021/bin/echo "STAT_USR(console): $STAT_USR"
022#################################################
023###ダウンロード起動時に削除する項目
024USER_TEMP_DIR=$(/usr/bin/mktemp -d)
025/bin/echo "起動時に削除されるディレクトリ:" "$USER_TEMP_DIR"
026###ダウンロードURL
027STR_URL="https://d.keka.io/"
028STR_LOCATION=$(/usr/bin/curl -s -L -o /dev/null -D - "$STR_URL" | grep "location" | grep "download" | awk '{print $2}' | tr -d '\n')
029/bin/echo "STR_LOCATION: $STR_LOCATION"
030###ファイル名を取得
031DL_FILE_NAME=$(/usr/bin/curl -s -L -o /dev/null -w '%{url_effective}' "$STR_LOCATION" | /usr/bin/rev | /usr/bin/cut -d'/' -f1 | /usr/bin/rev)
032/bin/echo "DL_FILE_NAME: $DL_FILE_NAME"
033###ダウンロード
034if ! /usr/bin/curl -L -o "$USER_TEMP_DIR/$DL_FILE_NAME" "$STR_URL" --connect-timeout 20; then
035  /bin/echo "ファイルのダウンロードに失敗しました HTTP1.1で再トライします"
036  if ! /usr/bin/curl -L -o "$USER_TEMP_DIR/$DL_FILE_NAME" "$STR_URL" --http1.1 --connect-timeout 20; then
037    /bin/echo "ファイルのダウンロードに失敗しました"
038    exit 1
039  fi
040fi
041#################################################
042STR_BUNDLEID="com.aone.keka"
043###終了させて
044/usr/bin/osascript -e "tell application id \"$STR_BUNDLEID\" to quit"
045#############################################
046####インストール先を作っておく
047/bin/mkdir -p "/Users/${STAT_USR}/Applications/Utilities/"
048/bin/chmod 750 "/Users/${STAT_USR}/Applications/Utilities"
049/bin/chmod 700 "/Users/${STAT_USR}/Applications"
050/usr/bin/touch "/Users/${STAT_USR}/Applications/Utilities/.localized"
051#################################################
052###古いファイルをゴミ箱に
053function DO_MOVE_TO_TRASH() {
054  if [ -e "$1" ]; then
055    TRASH_DIR=$(/usr/bin/mktemp -d "/Users/${STAT_USR}/.Trash/XXXXXXXX")
056    /bin/chmod 777 "$TRASH_DIR"
057    /bin/mv "$1" "$TRASH_DIR"
058  fi
059}
060DO_MOVE_TO_TRASH "/Users/${STAT_USR}/Applications/Utilities/Keka.app"
061DO_MOVE_TO_TRASH "/Users/${STAT_USR}/Applications/Keka.app"
062DO_MOVE_TO_TRASH "/Applications/Keka.app"
063#############################################
064#### DMG in APP dittoインストール
065######### DITTO コピーインストール
066/bin/echo "インストール開始:DITTO:" "STAT_USR"
067###マウントポイント
068STR_MOUNTPOINT_PATH="$USER_TEMP_DIR/MountPoint/Keka"
069###マウントポイント作成
070/bin/mkdir -p "$STR_MOUNTPOINT_PATH"
071/bin/chmod 777 "$STR_MOUNTPOINT_PATH"
072###ディスクをマウント
073/usr/bin/hdiutil attach "$USER_TEMP_DIR/$DL_FILE_NAME" -noverify -nobrowse -noautoopen -mountpoint "$STR_MOUNTPOINT_PATH"
074/bin/echo "Done Disk mount"
075sleep 2
076####コピーして
077/bin/echo "start ditto"
078STR_APP_PATH="/Users/${STAT_USR}/Applications/Utilities/Keka.app"
079/usr/bin/ditto "$STR_MOUNTPOINT_PATH/Keka.app"  "$STR_APP_PATH"
080sleep 2
081/bin/echo "Done dittto"
082###ディスクをアンマウント
083/usr/bin/hdiutil detach "$STR_MOUNTPOINT_PATH" -force
084
085################################################
086### DOCKに登録済みかゴミ箱に入れる前に調べておく
087##Dockの登録数を調べる
088JSON_PERSISENT_APPS=$(/usr/bin/defaults read com.apple.dock persistent-apps)
089NUN_CNT_ITEM=$(/bin/echo "$JSON_PERSISENT_APPS" | grep -o "tile-data" | wc -l)
090/bin/echo "Dock登録数:$NUN_CNT_ITEM"
091##Dockの登録数だけ繰り返し
092NUM_CNT=0           #カウンタ初期化
093NUM_POSITION="NULL" #ポジション番号にNULL文字を入れる
094###対象のバンドルIDがDockに登録されているか順番に調べる
095while [ $NUM_CNT -lt "$NUN_CNT_ITEM" ]; do
096  ##順番にバンドルIDを取得して
097  STR_CHK_BUNDLEID=$(/usr/libexec/PlistBuddy -c "Print:persistent-apps:$NUM_CNT:tile-data:bundle-identifier" "$HOME/Library/Preferences/com.apple.dock.plist")
098  ##対象のバンドルIDだったら
099  if [ "$STR_CHK_BUNDLEID" = "$STR_BUNDLEID" ]; then
100    /bin/echo "DockのポジションNO: $NUM_CNT バンドルID:$STR_CHK_BUNDLEID"
101    ##位置情報ポジションを記憶しておく
102    NUM_POSITION=$NUM_CNT
103  fi
104  NUM_CNT=$((NUM_CNT + 1))
105done
106
107##結果 対象のバンドルIDが無ければ
108if [ "$NUM_POSITION" = "NULL" ]; then
109  /bin/echo "Dockに未登録です"
110  PLIST_DICT="<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>$STR_APP_PATH</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
111  /usr/bin/defaults write com.apple.dock persistent-apps -array-add "$PLIST_DICT"
112else
113  ##すでに登録済みの場合は一旦削除
114  /bin/echo "Dockの$NUM_POSITION に登録済み 削除してから同じ場所に登録しなおします"
115  ##削除して
116  /usr/libexec/PlistBuddy -c "Delete:persistent-apps:$NUM_POSITION" "$HOME/Library/Preferences/com.apple.dock.plist"
117  ##保存
118  /usr/libexec/PlistBuddy -c "Save" "$HOME/Library/Preferences/com.apple.dock.plist"
119  ###同じ内容を作成する
120  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION dict" "$HOME/Library/Preferences/com.apple.dock.plist"
121  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:GUID integer $RANDOM$RANDOM" "$HOME/Library/Preferences/com.apple.dock.plist"
122  ## 想定値 file-tile directory-tile
123  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-type string file-tile" "$HOME/Library/Preferences/com.apple.dock.plist"
124  ###↑この親Dictに子要素としてtile-dataをDictで追加
125  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data dict" "$HOME/Library/Preferences/com.apple.dock.plist"
126  ###↑子要素のtile-dataにキーと値を入れていく
127  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:showas integer 0" "$HOME/Library/Preferences/com.apple.dock.plist"
128  ## 想定値 2:フォルダ 41:アプリケーション 169 Launchpad とMission Control
129  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:file-type integer 41" "$HOME/Library/Preferences/com.apple.dock.plist"
130  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:displayas integer 0" "$HOME/Library/Preferences/com.apple.dock.plist"
131  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:parent-mod-date integer $(date '+%s')" "$HOME/Library/Preferences/com.apple.dock.plist"
132  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:file-mod-date integer $(date '+%s')" "$HOME/Library/Preferences/com.apple.dock.plist"
133  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:file-label string $STR_APP_NAME" "$HOME/Library/Preferences/com.apple.dock.plist"
134  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:is-beta bool false" "$HOME/Library/Preferences/com.apple.dock.plist"
135  ###↑この子要素のtile-dataに孫要素でfile-dataをDictで追加
136  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:file-data dict" "$HOME/Library/Preferences/com.apple.dock.plist"
137  ###値を入れていく
138  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:file-data:_CFURLStringType integer 15" "$HOME/Library/Preferences/com.apple.dock.plist"
139  /usr/libexec/PlistBuddy -c "add:persistent-apps:$NUM_POSITION:tile-data:file-data:_CFURLString string file://$STR_APP_PATH" "$HOME/Library/Preferences/com.apple.dock.plist"
140  ##保存
141  /usr/libexec/PlistBuddy -c "Save" "$HOME/Library/Preferences/com.apple.dock.plist"
142fi
143###
144/bin/echo "処理終了 DOCKを再起動します"
145/usr/bin/killall "Dock"
146
147
148exit 0
AppleScriptで生成しました

|

非圧縮zipを作る(ファイル指定)


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "UniformTypeIdentifiers"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()

#############################
###ダイアログを前面に出す
set strName to (name of current application) as text
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
############ デフォルトロケーション
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias

############UTIリスト
set listUTI to {"public.data"}
set strMes to ("ファイルを選んでください") as text
set strPrompt to ("ファイルを選んでください") as text
try
  ### ファイル選択時
  set listAliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as list
on error
log "エラーしました"
return "エラーしました"
end try


repeat with itemAliasFilePath in listAliasFilePath
  
  set strFilePath to (POSIX path of itemAliasFilePath) as text
  set ocidFilePathStr to (refMe's NSString's stringWithString:(strFilePath))
  set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
  set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
  set ocidSaveFilePathURL to (ocidFilePathURL's URLByAppendingPathExtension:("zip"))
  #
  set ocidSaveFilePath to ocidSaveFilePathURL's |path|()
  set boolFileExists to (appFileManager's fileExistsAtPath:(ocidSaveFilePath) isDirectory:(false))
  if boolFileExists is true then
log "同名ファイルがある"
    set numCntNo to 1 as integer
    repeat
      set strSetValue to (numCntNo & ".zip") as text
      set ocidSaveFilePathURL to (ocidFilePathURL's URLByAppendingPathExtension:(strSetValue))
      set ocidSaveFilePath to ocidSaveFilePathURL's |path| as text
      set boolChkFileExists to (appFileManager's fileExistsAtPath:(ocidSaveFilePath) isDirectory:(false))
      if boolChkFileExists is false then
        set strSaveFilePath to ocidSaveFilePathURL's |path|() as text
        exit repeat
      end if
    end repeat
  else if boolFileExists is false then
log "同名ファイルが無いので処理する"
    set strSaveFilePath to ocidSaveFilePathURL's |path|() as text
  end if
  
  set strFilePath to ocidFilePathURL's |path| as text
  set strContainerDirPath to ocidContainerDirPathURL's |path| as text
  
  set strCommandText to ("pushd \"" & strContainerDirPath & "\" && '/usr/bin/zip' -0X \"" & strSaveFilePath & "\" \"" & strFilePath & "\"") as text
log strCommandText
do shell script strCommandText
  
end repeat





|

非圧縮zipを作る(フォルダ指定)


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application


###Wクリックで起動した場合
on run
  set aliasDefaultLocation to (path to desktop from user domain) as alias
  set strPromptText to "フォルダをえらんでください"
  set strMesText to "フォルダをえらんでください"
  try
    set listFolderPath to (choose folder strMesText with prompt strPromptText default location aliasDefaultLocation with multiple selections allowed, invisibles and showing package contents) as list
  on error
log "エラーしました"
return "エラーしました"
  end try
open listFolderPath
end run

###ドロップで起動した場合
on open listFolderPath
  tell application "Finder"
    set strKind to (kind of (item 1 of listFolderPath)) as text
  end tell
  if strKind is not "フォルダ" then
return "フォルダ以外は処理しない"
  end if
  ####構造ファイルの名称を取得する
  repeat with itemFolderPath in listFolderPath
    set aliasFolderPath to itemFolderPath as alias
    tell application "Finder"
      tell folder aliasFolderPath
        set listContentsAlias to name of every folder as list
        set strDirName to name as text
      end tell
      set aliasContainerDirPath to (container of aliasFolderPath) as alias
    end tell
    set strContainerDirPath to (POSIX path of aliasContainerDirPath) as text
    set strDirPath to (POSIX path of aliasFolderPath) as text
    set strCommandText to ("pushd \"" & strDirPath & "\"") as text
log strCommandText
do shell script strCommandText
    
    set strCommandText to ("pushd \"" & strDirPath & "\" && '/usr/bin/zip' -0rX \"../" & strDirName & ".zip\" *") as text
log strCommandText
do shell script strCommandText
    
  end repeat
  
end open






|

[bash]UnarchiverDMGインストール


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe

##################################
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
###実行しているユーザー名
HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
/bin/echo "実行ユーザー(HOME): $HOME_USER"
###logname
LOGIN_NAME=$(/usr/bin/logname)
/bin/echo "ログイン名(logname): $LOGIN_NAME"
###UID
USER_NAME=$(/usr/bin/id -un)
/bin/echo "ユーザー名(id): $USER_NAME"
###STAT
STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
/bin/echo "STAT_USR(console): $STAT_USR"
##################################
/bin/echo "インストール先確保" $HOME/Applications/Utilities
/bin/mkdir -p $HOME/Applications/Utilities
/bin/chmod 700 $HOME/Applications
/bin/chmod 755 $HOME/Applications/Utilities
/usr/bin/touch $HOME/Applications/.localized
/usr/bin/touch $HOME/Applications/Utilities/.localized
##################################
LIST_APPNAME=("unar" "Unarchiver")
for ITEM_APPNAME in "${LIST_APPNAME[@]}"; do
STR_PNO=$(/usr/bin/pgrep -f "$ITEM_APPNAME")
/bin/kill -9 "$STR_PNO"
done
##################################
STR_URL="https://dl.devmate.com/com.macpaw.site.theunarchiver/TheUnarchiver.dmg"
##ダウンロード先
STR_TMPDIRPATH=$(/usr/bin/mktemp -d)
/bin/chmod 777 "$STR_TMPDIRPATH"
/bin/echo "ダウンロード開始:" "$STR_TMPDIRPATH"
##生存確認
/usr/bin/curl -s --head "$STR_URL" >/dev/null
if [ $? -ne 0 ]; then
/bin/echo "エラー:URLの生存確認で失敗しました"
exit 1
fi
###リダイレクト先のURLを取得
STR_REDIRECT_URL=$(/usr/bin/curl -s -L -I -o /dev/null -w '%{url_effective}' "$STR_URL")
if [ $? -ne 0 ]; then
/bin/echo "エラー:リダイレクトの取得に失敗しました"
exit 1
fi
###ファイル名を取得
STR_FILE_NAME=$(/usr/bin/basename "$STR_REDIRECT_URL")
/bin/echo "ファイル名:$PKG_FILE_NAME"
###ダウンロード
/usr/bin/curl -L --retry 3 --retry-connrefused --retry-delay 3 -o "$STR_TMPDIRPATH/$STR_FILE_NAME" "$STR_URL"
if [ $? -ne 0 ]; then
/bin/echo "エラー:ダウンロードに失敗しました"
exit 1
fi
##################################
STR_DMG_PATH="$STR_TMPDIRPATH/$STR_FILE_NAME"
/usr/bin/hdiutil attach "$STR_DMG_PATH" -noverify -nobrowse -noautoopen
if [ $? -ne 0 ]; then
/bin/echo "エラー:ディスクのマウントで失敗しました"
exit 1
fi
##################################
STR_DIST_PATH="$HOME/Applications/Utilities/The Unarchiver.app/"
if [ -d "$STR_DIST_PATH" ]; then
/bin/echo "ファイルが存在します"
STR_TRASH_DIR=$(/usr/bin/mktemp -d "$HOME/.Trash/Unarchiver.XXXXXXXX")
/bin/chmod 777 "$STR_TRASH_DIR"
/bin/mv -f "$STR_DIST_PATH" "$STR_TRASH_DIR"
/bin/echo "古いファイルをゴミ箱に入れました"
fi
##################################
STR_ORG_PATH="/Volumes/The Unarchiver/The Unarchiver.app"
/usr/bin/ditto "$STR_ORG_PATH" "$STR_DIST_PATH"
if [ $? -ne 0 ]; then
/usr/bin/hdiutil detach "/Volumes/The Unarchiver" -force
/bin/echo "エラー:ファイルのコピーで失敗しました"
exit 1
fi
##################################
/usr/bin/hdiutil detach "/Volumes/The Unarchiver" -force
if [ $? -ne 0 ]; then
/usr/bin/hdiutil detach "/Volumes/The Unarchiver 1" -force
/usr/bin/hdiutil detach "/Volumes/The Unarchiver 2" -force
/bin/echo "エラー:ディスクのアンマウントに失敗しました"
exit 1
fi
##################################
LIST_BUNDLEID=("cx.c3.theunarchiver" "com.macpaw.site.theunarchiver")
for ITEM_BUNDLEID in "${LIST_BUNDLEID[@]}"; do
/bin/echo "$ITEM_BUNDLEID"
/usr/bin/defaults write "$ITEM_BUNDLEID" createFolder -integer 2
/usr/bin/defaults write "$ITEM_BUNDLEID" extractionDestination -integer 1
/usr/bin/defaults write "$ITEM_BUNDLEID" folderModifiedDate -integer 2
/usr/bin/defaults write "$ITEM_BUNDLEID" LaunchCount -integer 0
/usr/bin/defaults write "$ITEM_BUNDLEID" filenameEncoding -integer 8
/usr/bin/defaults write "$ITEM_BUNDLEID" TUConfigInformationBannerViewedCount -integer 0
/usr/bin/defaults write "$ITEM_BUNDLEID" OnboardingUserViewedWelcomeSlide -bool true
/usr/bin/defaults write "$ITEM_BUNDLEID" SUEnableAutomaticChecks -bool true
/usr/bin/defaults write "$ITEM_BUNDLEID" userAgreedToNewTOSAndPrivacy -bool true
/usr/bin/defaults write "$ITEM_BUNDLEID" isFreshInstall -bool true
/usr/bin/defaults write "$ITEM_BUNDLEID" TUConfigInformationBannerOpened -bool true
/usr/bin/defaults write "$ITEM_BUNDLEID" deleteExtractedArchive -bool true
/usr/bin/defaults write "$ITEM_BUNDLEID" TUConfigInformationBannerOpened -bool true
/bin/echo "基本設定を行いました"
done

/usr/bin/killall cfprefsd

/bin/echo "終了しました"
exit 0


|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom