我有一个AppleScript,可以从文件名的开头删除任何数字和/或连字符和下划线。这很好。 但是,有时我可能会遇到这样的情况:
Filename Eg; 01-Dog.jpg, 02-Dog.jpg, 03-Dog.jpg, etc.
在这种情况下,脚本会停止/不运行,只告诉我已经存在具有该名称的文件。它没有告诉我哪个文件与之冲突(有时会有很多文件要查看)。
有人可以帮助修改此脚本,以便在这种情况下,具有相同名称的文件将在文件名末尾附加一个数字OR字母(在扩展名之前)。
EG; Dog2.jpg,Dog3.jpg等
on run {input, parameters}
repeat with thisFile in input
tell application "Finder"
set filename to name of (thisFile as alias)
set filename to (do shell script "echo " & quoted form of filename & " | sed 's/^[0-9_-]*//'")
set name of thisFile to filename
end tell
end repeat
return input
end run
感谢您的帮助!!
答案 0 :(得分:0)
基本上,你想在try块中重命名,这样如果它出错,你可以在名称中添加1,2,3 ...然后再次尝试。 这是一个可行的版本:
on run {input, parameters}
repeat with thisFile in input
tell application "Finder" to set {theName, theExtension} to {name, name extension} of (thisFile as alias)
set theName to text 1 thru ((offset of ("." & theExtension) in theName) - 1) of theName
set theName to (do shell script "echo " & quoted form of theName & " | sed 's/^[0-9_-]*//'")
set n to ""
repeat 30 times -- will work for up to 30 versions of the same file name
try
tell application "Finder" to set name of thisFile to (theName & n & "." & theExtension)
exit repeat
on error errMsg
if errMsg contains "already an item with that name" then
if n is "" then
set n to 2
else
set n to (n as integer) + 1
end if
else
display dialog errMsg
exit repeat
end if
end try
end repeat
end repeat
return input
end run
偏移线用于显示如何获取文件的基本名称。您需要捕获与扩展名分开的基本名称,以便附加1,2,3 ...疯狂,Finder字典具有名称扩展属性,但不是基本名称属性。但是,我只是将扩展名截断到sed调用中。如果您的文件没有扩展名,则需要添加错误检查。