很抱歉在没有粘贴我的编码尝试的情况下提出问题,但我之前从未使用过AppleScript,而且我不知道如何做到这一点。我已经在网上发现了一些代码,它们执行了每一步的一小部分,但是我无法弄清楚如何做的一些关键部分。如果我能弄清楚它会节省很多时间。基本上我的问题是,客户端发送了数千张照片,所有照片都在多个子文件夹级别,以及包含大约300个文件名的Excel文档,我需要提取和使用。我可以将Excel文档中的文件名复制到纯文本文件中,可以是多行或逗号分隔。
所以这就是我需要做的事情:
如果您无法对整个过程进行编码,如果您可以帮我循环浏览文本文件,搜索文件名并将第一个结果复制到另一个文件夹,并将文件名添加到文本文件中找不到文件,然后我可以把它拼凑起来。谢谢你的帮助。
答案 0 :(得分:2)
您可以尝试以下方式:
set newFolder to POSIX path of (path to desktop as text) & "Found Photos"
do shell script "mkdir -p " & quoted form of newFolder
set filePaths to paragraphs of (read (choose file with prompt "Select file list") as «class utf8»)
set fileFolder to POSIX path of (choose folder with prompt "Select folder containing files")
set foundFiles to {}
repeat with fileName in filePaths
set fileName to (contents of fileName)
set xxx to do shell script "find " & quoted form of fileFolder & " -name " & quoted form of fileName
if xxx ≠ "" then
tell application "System Events" to move file xxx to newFolder
set end of foundFiles to fileName & return
end if
end repeat
set foundFiles to (foundFiles as text)
do shell script "echo " & quoted form of foundFiles & " > " & quoted form of POSIX path of ((path to desktop as text) & "FoundFiles.txt")
答案 1 :(得分:2)
使用shell脚本可能更容易:
IFS=$'\n'
mkdir -p ~/Desktop/target/
for l in $(cat ~/Desktop/files.txt); do
found=$(find ~/Documents/source -type f -name "*$l*")
[[ -n $found ]] && cp $found ~/Desktop/target/ || echo "$l"
done