Applescript 移动到具有顺序命名的新文件夹
Applescript move to a new folder with sequential naming
我编写了下面的基本脚本来检查文件夹是否存在,如果存在则获取该文件夹的内容并将其添加到子文件夹。
如您所见,在这个脚本中生成了名为 V1 的子文件夹,我想知道是否有一种方法可以按顺序命名并生成新文件夹?
例如,如果文件夹 V1 存在创建 V2 并移动内容
当前脚本
--Set image source folder
set SourceFolder to (choose folder with prompt "Choose Base Images:")
set Sourcefoldertext to SourceFolder as text
set FoldertoReplace to Sourcefoldertext & "Images:"
tell application "Finder
if (exists folder named "Images" in folder SourceFolder) then make new folder in folder FoldertoReplace with properties {name:"V1"}
if (exists folder named "Images" in folder SourceFolder) then set fileList to every file of folder FoldertoReplace
if not (exists folder named "Images" in folder SourceFolder) then make new folder in folder SourceFolder with properties {name:"Images"}
if (exists folder named "V1" in folder FoldertoReplace) then set VersionFolder to the folder named "V1" in the folder FoldertoReplace
if (exists folder named "V1" in folder FoldertoReplace) then return move the fileList to the VersionFolder'
end tell
谢谢
P
添加此处理程序,它会创建一个具有顺序名称的新文件夹和 returns 对新创建文件夹的 Finder 引用
on createSequentialVersionFolder(targetFolderPath)
set counter to 1
repeat
set versionFolder to "V" & counter
tell application "Finder"
if not (exists folder versionFolder in folder targetFolderPath) then
make new folder at folder targetFolderPath with properties {name:versionFolder}
return result
end if
end tell
set counter to counter + 1
end repeat
end createSequentialVersionFolder
您的其他代码包含很多多余的东西。可以减少到
set Sourcefolder to (choose folder with prompt "Choose Base Images:") as text
set FoldertoReplace to Sourcefolder & "Images:"
tell application "Finder"
if exists folder FoldertoReplace then
set versionFolder to my createSequentialVersionFolder(FoldertoReplace)
set fileList to every file of folder FoldertoReplace
move the fileList to the versionFolder
else
make new folder in folder SourceFolder with properties {name:"Images"}
end if
end tell
现有的解决方案很棒,但我想我会添加一个替代方案来增加一些变化。
此处理程序使用 系统事件 和递归函数调用来检查现有文件夹版本。参数 targetFolderPath
可以是 alias
对象、posix 路径或 HFS 路径。
to createSequentialVersionFolder at targetFolderPath given name:dir : "V"
local targetFolderPath, dir
script
property fp : targetFolderPath
property dirname : dir
to checkVersion(i)
tell application "System Events"
if exists the folder named (dirname & i) ¬
in the folder named fp then ¬
return my checkVersion(i + 1)
make new folder at folder named fp ¬
with properties ¬
{name:dirname & i}
end tell
end checkVersion
end script
result's checkVersion(1)
end createSequentialVersionFolder
使用:
createSequentialVersionFolder at "~/Desktop"
或:
createSequentialVersionFolder at (path to desktop folder)
我编写了下面的基本脚本来检查文件夹是否存在,如果存在则获取该文件夹的内容并将其添加到子文件夹。
如您所见,在这个脚本中生成了名为 V1 的子文件夹,我想知道是否有一种方法可以按顺序命名并生成新文件夹?
例如,如果文件夹 V1 存在创建 V2 并移动内容
当前脚本
--Set image source folder
set SourceFolder to (choose folder with prompt "Choose Base Images:")
set Sourcefoldertext to SourceFolder as text
set FoldertoReplace to Sourcefoldertext & "Images:"
tell application "Finder
if (exists folder named "Images" in folder SourceFolder) then make new folder in folder FoldertoReplace with properties {name:"V1"}
if (exists folder named "Images" in folder SourceFolder) then set fileList to every file of folder FoldertoReplace
if not (exists folder named "Images" in folder SourceFolder) then make new folder in folder SourceFolder with properties {name:"Images"}
if (exists folder named "V1" in folder FoldertoReplace) then set VersionFolder to the folder named "V1" in the folder FoldertoReplace
if (exists folder named "V1" in folder FoldertoReplace) then return move the fileList to the VersionFolder'
end tell
谢谢 P
添加此处理程序,它会创建一个具有顺序名称的新文件夹和 returns 对新创建文件夹的 Finder 引用
on createSequentialVersionFolder(targetFolderPath)
set counter to 1
repeat
set versionFolder to "V" & counter
tell application "Finder"
if not (exists folder versionFolder in folder targetFolderPath) then
make new folder at folder targetFolderPath with properties {name:versionFolder}
return result
end if
end tell
set counter to counter + 1
end repeat
end createSequentialVersionFolder
您的其他代码包含很多多余的东西。可以减少到
set Sourcefolder to (choose folder with prompt "Choose Base Images:") as text
set FoldertoReplace to Sourcefolder & "Images:"
tell application "Finder"
if exists folder FoldertoReplace then
set versionFolder to my createSequentialVersionFolder(FoldertoReplace)
set fileList to every file of folder FoldertoReplace
move the fileList to the versionFolder
else
make new folder in folder SourceFolder with properties {name:"Images"}
end if
end tell
现有的解决方案很棒,但我想我会添加一个替代方案来增加一些变化。
此处理程序使用 系统事件 和递归函数调用来检查现有文件夹版本。参数 targetFolderPath
可以是 alias
对象、posix 路径或 HFS 路径。
to createSequentialVersionFolder at targetFolderPath given name:dir : "V"
local targetFolderPath, dir
script
property fp : targetFolderPath
property dirname : dir
to checkVersion(i)
tell application "System Events"
if exists the folder named (dirname & i) ¬
in the folder named fp then ¬
return my checkVersion(i + 1)
make new folder at folder named fp ¬
with properties ¬
{name:dirname & i}
end tell
end checkVersion
end script
result's checkVersion(1)
end createSequentialVersionFolder
使用:
createSequentialVersionFolder at "~/Desktop"
或:
createSequentialVersionFolder at (path to desktop folder)