【发布时间】:2019-10-25 09:21:41
【问题描述】:
附加的脚本是通过合并两个脚本创意创建的。这个概念是使用“文件夹操作”功能自动将所有 Airdrop 文件移动到下载文件夹中的子文件夹“AirDrop”。但是,脚本的该部分必须存在“Airdrop”文件夹才能运行,有时,在清理时,我会将其与所有其他下载一起删除。
所以,我添加了一些代码(请注意,我是编码方面的业余爱好者),让它检查“AirDrop”文件夹并在丢失时创建它。
当我在脚本编辑器中对其进行测试时,这部分可以工作,并让我知道“Airdrop”文件夹是否存在,如果不存在,它会被创建。
当作为操作脚本附加到下载文件夹时,似乎会跳过最近添加的代码。所有空投文件都进入下载文件夹或空投子文件夹(如果存在),但脚本确实似乎检查 AirDrop 文件夹或“说”是否存在“AirDrop”文件夹。如果丢失,它将不会创建它。
property ORIGINAL_AIRDROP_FOLDER : "macOS SSD:Users:USerName:Downloads"
property NEW_AIRDROP_FOLDER : "macOS SSD:Users:UserName:Downloads:AirDrop"
property QUARANTINE_KEY : "59"
property GET_QUARANTINE_COMMAND_START : "ls -l -@ '"
property GET_QUARANTINE_COMMAND_END : "' | tr '\\n' ' ' | sed 's/.*com\\.apple\\.quarantine\\s*\\(\\d*\\)/ \\1/' | awk '{$1=$1};1'"
----- 添加以检查和创建丢失的子文件夹---------
tell application "Finder"
set inputFolder to (ORIGINAL_AIRDROP_FOLDER) as Unicode text
set convertedFolderPath to (ORIGINAL_AIRDROP_FOLDER) & ":" & ("AirDrop")
if (exists (folder convertedFolderPath)) then
say "Air Drop folder exists"
else
say "Air Drop folder does not exist"
make new folder at inputFolder with properties {name:"AirDrop"}
say "Created Air Drop folder"
end if
end tell
在收到 added_items 后将文件夹项目添加到 this_folder
repeat with i from 1 to length of added_items
set current_item to item i of added_items
set quarantine_type to getQuarantineType(POSIX path of current_item)
if quarantine_type is equal to QUARANTINE_KEY then
moveFile(current_item, alias NEW_AIRDROP_FOLDER)
end if
end repeat
end adding folder items to
on moveFile(move_file, destination_dir)
tell application "Finder"
move move_file to destination_dir with replacing
end tell
end moveFile
on getQuarantineType(file_path)
return do shell script GET_QUARANTINE_COMMAND_START & file_path & GET_QUARANTINE_COMMAND_END
end getQuarantineType
我希望它在需要时运行脚本的一部分来创建丢失的文件夹。
【问题讨论】:
-
至于 comment
------ Added to check for and create missing sub-folder---------之后的tell application "Finder"block,我会删除它,简单地使用:do shell script "mkdir -p \"$HOME/Downloads/AirDrop\""这样如果文件夹不存在,则创建它,如果存在,则没有任何变化!不需要所有的繁文缛节和胡言乱语。 :) -
您没有运行添加的代码。
adding folder items处理程序是为文件夹操作调用的,因此您需要添加语句或从那里为您添加的检查调用处理程序。 -
如果您喜欢的话,来自 User3439894 的答案会清理代码,但是它仍然无法在“文件夹操作”脚本中正确运行,并且在运行操作时不会被调用。就像我当前的脚本一样,它在脚本编辑器中工作,但不是在实际使用中。感谢您提供额外的编程想法。
-
red_menace 您介意详细说明吗?如何运行添加的代码。就像我说的我是编码的业余爱好者。一直在寻找学习。什么样的说法?它去哪儿了?如何使用呼叫处理程序?
-
再次感谢您的意见。我玩得更多,阅读更多,并将添加的代码放在脚本中的正确位置,以便调用它。 - 问题解决了!
标签: macos applescript