如何在finder中复制一批文件

时间:2016-01-28 12:34:23

标签: macos file duplicates applescript

我之前从未使用过Apple Script,发现自己需要完成一项非常重复的任务。基本上我需要做的是批量复制并按照模式重命名一些文件。我最好需要一个对话框说

“有多少重复?”

所以,如果我有这个:

  

1-1.jpg 1-2.jpg 1-3.jpg

(可以突出显示任意数量的文件,而不仅仅是三个)

我基本上想要做的是突出显示所有三个文件然后从服务菜单调用Applescript来询问我想要制作多少重复项,然后重命名它们:

  

2-1.jpg 2-2.jpg 2-3.jpg 3-1.jpg 3-2.jpg 3-3.jpg ...

显然取决于我需要多少重复项。

对于有Applescript知识的人来说,这可能是一分钟的工作,但是我需要花一些时间来学习这一点!

2 个答案:

答案 0 :(得分:0)

如果您突出显示这些文件,然后按需要重复按Command + D(复制),那么您基本上已经没有任何AppleScript了。唯一不同的是你会得到更明确命名的重复:

  • 1-1.jpg
  • 1-1 copy.jpg
  • 1-1 copy 1.jpg
  • 1-1 copy 2.jpg

如果要在“服务”菜单中自动执行此操作,可以使用Automator构建服务。 “服务”菜单不是运行AppleScripts的典型位置。有一个Script菜单,您可以在Script Editor首选项中启用它(在菜单栏中显示Script菜单。)

如果你想用AppleScript做这件事,那么你想学习如何编写Finder脚本,这是一项相当基本的任务。在脚本编辑器中,您可以转到文件▶打开字典并选择Finder,您将看到Finder的脚本字典,其中包含Finder可以理解的命令。它起初看起来很复杂,但是当你努力制作第一个脚本时它就变得清晰了。

这正是人们第一次学习AppleScript时所做的那种项目。有许多在线学习资源,如MacScripter和其他。您可以从其他人的Finder脚本开始,该脚本几乎可以执行您想要的任务,然后根据您的需要进行调整以实现您的工作。

答案 1 :(得分:0)

下面的剧本做了你想要的(我想!)。

例如:只选择了1个文件' 1-surpername.jpg'在文件夹' MyFolder'中,要求有2个重复的文件

结果在' Myfolder"是' 1-supername.jpg',' 2-supername.jpg',' 3-supername.jpg'。

当然,如果选择了多个文件,每个文件在各自的文件夹中都会有相同的处理方式。

tell application "Finder" to set MyFiles to selection
set NbFiles to count of MyFiles
if NbFiles = 0 then return
set Dupli to 0
set myAnswer to display dialog "There are " & NbFiles & " selected. How many duplicate do you want ?" default answer "1"
try
set Qty to text returned of myAnswer
on error
set Qty to 1
display dialog "Job cancelled. value entered incorrect"
end try
display dialog "Please confirm that you want to duplicate " & Qty & " times the " & NbFiles & " files selected ?"

repeat with F in MyFiles -- duplication for each selected file
set myName to name of F
set myFolder to POSIX path of ((folder of F) as string)
set AppleScript's text item delimiters to {"-"}
set ListName to text items of myName
set myCount to (item 1 of ListName) as integer
repeat with I from 1 to Qty -- for each duplication
    set myCount to myCount + 1 -- counter of the begining of the file name
    set item 1 of ListName to (myCount as string) --increase the counter for the new name
    set newName to ListName as string
    try
        do shell script "cp " & quoted form of (myFolder & myName) & " " & quoted form of (myFolder & newName)
    on error
        display dialog "error during copy of " & myName & " into " & newName
    end try
end repeat
end repeat