Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 在我确定重命名文件是否存在的过程中,需要修复Applescript错误吗_Email_Applescript_File Exists - Fatal编程技术网

Email 在我确定重命名文件是否存在的过程中,需要修复Applescript错误吗

Email 在我确定重命名文件是否存在的过程中,需要修复Applescript错误吗,email,applescript,file-exists,Email,Applescript,File Exists,我有一个脚本,可以在重命名后将选定电子邮件集中的所有电子邮件附件复制到文件夹中。因为附件有时在源位置有相同的名称,即使重命名,我也需要在后续版本中添加类似“复制”的内容,这样它们就不会彼此重叠保存。我有一些编程知识,但对AppleScript了解很少,因此我拼凑了以下内容: 告诉应用程序“邮件” 将消息设置为选定内容 将Output文件夹设置为(选择文件夹)作为字符串 以从1到消息长度重复此操作 将消息设置为消息的a项 将{year:y,month:m,day:d}设置为消息发送的日期 将日期设

我有一个脚本,可以在重命名后将选定电子邮件集中的所有电子邮件附件复制到文件夹中。因为附件有时在源位置有相同的名称,即使重命名,我也需要在后续版本中添加类似“复制”的内容,这样它们就不会彼此重叠保存。我有一些编程知识,但对AppleScript了解很少,因此我拼凑了以下内容:

告诉应用程序“邮件”

将消息设置为选定内容
将Output文件夹设置为(选择文件夹)作为字符串
以从1到消息长度重复此操作
将消息设置为消息的a项
将{year:y,month:m,day:d}设置为消息发送的日期
将日期设置为(y*10000+m*100+d)作为字符串
设置邮件的每个邮件附件的附件
从1到附件的长度用b重复
将附件设置为附件的b项
将AttachmentName设置为AttachmentName的日期(&N)
将保存路径设置为Output文件夹和AttachmentName
告诉应用程序“系统事件”以保存文件路径
重复上述步骤,同时检查结果
将oldDelims设置为AppleScript的文本项分隔符
将AppleScript的文本项分隔符设置为{“.”
将delimitedList设置为保存路径的每个文本项
将后缀设置为“.”&delimitedList的最后一项
尝试
将存储路径的文本项1到2复制到存储路径库
论错误
将存储路径复制到存储路径库
结束尝试
--显示对话框“保存路径前置:”&保存路径
--显示对话框“存储路径库和“复制”和后缀pre-”&存储路径库和“复制”和后缀
将AppleScript的文本项分隔符设置为oldDelims
将savepath基础和“copy”后缀复制到savepath
--显示对话框“保存路径post-:”&保存路径

告诉应用程序“系统事件”到存在的文件保存路径--您的错误消息告诉您问题所在。请注意错误消息周围的括号{}

Can’t make {"...Desktop:Mail Attachments:20140830 Resumé 2014", "pages", " copy", ".zip"} into type integer."
这表明这是一个项目列表,而不是字符串。因此,您需要首先将其设置为字符串,因此更改

copy text items 1 thru -2 of theSavePath to theSavePathBase
致:

话虽如此,我认为您的实际复制命令(如下所示)不起作用。似乎您希望copy命令重命名文件并一步复制所有文件

copy theSavePathBase & " copy" & suffix to theSavePath
“复制”命令将无法找到“…桌面:邮件附件:20140830 Resumé2014.pages.copy.zip”,因为它不存在。这是重命名文件所需的名称。我认为最好的方法是使用“cp”unix可执行命令来预执行副本,因为它可以一步复制和重命名。类似这样的情况,不过您必须弄清楚如何获取变量“theAttachmentCurrentPath”的实际值


首先,您的行“告诉应用程序”系统事件“到现有文件保存路径”不在重复循环中,因此我认为该流不会解释第二次发生文件名冲突的情况。它将只使用相同的“复制”方案。谢谢!我认为这就是问题所在,但不知道如何进行类型转换。我试着寻找解决办法,但不知怎的,结果是空的。我感谢你的帮助。
copy (text items 1 thru -2 of theSavePath) as text to theSavePathBase
copy theSavePathBase & " copy" & suffix to theSavePath
do shell script "cp " & quoted form of POSIX path of theAttachmentCurrentPath & space & quoted form of POSIX path of (theOutputFolder & text 1 thru -5 of theAttachmentName & " copy" & text -4 thru -1 of theAttachmentName)