與這里描述的問題類似,我有一個包含檔案名的文本檔案,以及一個包含影像檔案的檔案夾,需要復制到另一個目的地。由于這些檔案是數百個相當頻繁的檔案,如果能自動完成這項任務,將會有很大的幫助。
挑戰在于,文本檔案中的一些檔案可能不存在,而我當前版本的腳本無法考慮到這種情況,并拋出了一個錯誤。
綜上所述,我想使用Automator & Apple Script來:
這是目前我所擁有的--只要文本檔案中的每一行都有一個實際的影像,這就可以了:
和AppleScript:
在運行{input, parameters}時
將 imgDestination 設定為輸入的第 2 項
將imgSource設定為輸入的專案1
設定imgNameFile為選擇檔案,提示{"選擇影像檔案名的檔案:"}。
將imageList設定為每一段(讀取imgNameFile)。
對imageList中的每個名字進行重復
告訴應用程式 "查找器"
將targetImageFile設定為(獲取檔案夾imgSource中名稱=(eachName為text)的每個檔案)的第1項
將targetImageFile復制到檔案夾imgDestination中。
結束告訴
結束重復
回傳輸入
結束運行
不幸的是,我的技能不足以為5&6想出一個if/else方案,所以任何幫助都是非常感謝的。
uj5u.com熱心網友回復:
你必須檢查該檔案是否存在。
你的腳本是相當低效的,因為Finder中的whose子句是非常昂貴的,盡管你可以用
告訴應用程式 "Finder"
復制(獲取檔案夾imgSource中名稱在imageList中的每個檔案)到檔案夾imgDestination中
結束告訴
一個更有效的方法是檢索一次檔案names,并檢查串列中是否包含當前的名稱。
如果文本檔案是UTF8編碼的,可能會有一個意外的行為,這是一個準標準。如果是這樣,你必須讀取文本檔案為 "class utf8"。
最后,如果input中的源和目標參考是AppleScript別名指定器,你必須洗掉所有出現的folder關鍵字。
在運行{input, parameters}時
將 imgDestination 設定為輸入的專案 2
將imgSource設定為輸入的第1項
設定imgNameFile為選擇檔案,提示{"選擇影像檔案名的檔案:"}。
將imageList設定為每一段(將imgNameFile讀為 "class utf8")。
告訴應用程式 "Finder "將fileNames設定為檔案夾imgSource中每個檔案的名稱。
對imageList中的每個名字進行重復
如果 fileNames 包含每個名字,那么
告訴應用程式 "Finder",將檔案夾imgSource中的檔案eachName復制到檔案夾imgDestination中。
結束 如果
結束重復
回傳輸入
結束運行
CodePudding
如果沒有找到檔案,targetImageFile變數被設定為{}(即一個空串列)。這個錯誤是由duplicate命令拋出的,因為它不能復制這個空串列。解決這個問題的方法是:只有當targetImageFile的值不是{}時才嘗試復制。
在運行{input, parameters}時
將 imgDestination 設定為輸入的第 2 項
將imgSource設定為輸入的第1項
設定imgNameFile為選擇檔案,提示{"選擇影像檔案名的檔案:"}。
將imageList設定為(讀取imgNameFile)的段落
對imageList中的每個名字進行重復
告訴應用程式 "查找器"
將targetImageFile設定為(檔案夾imgSource中的第一個檔案,其名稱=每個名稱)。
如果targetImageFile不是{},則將targetImageFile復制到檔案夾imgDestination中
結束告知
結束重復
回傳輸入
結束運行
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/308851.html
標籤:
