我之前从未使用过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知识的人来说,这可能是一分钟的工作,但是我需要花一些时间来学习这一点!
答案 0 :(得分:0)
如果您突出显示这些文件,然后按需要重复按Command + D(复制),那么您基本上已经没有任何AppleScript了。唯一不同的是你会得到更明确命名的重复:
如果要在“服务”菜单中自动执行此操作,可以使用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