我正在尝试编写一个重命名子文件夹中文件夹的脚本。换句话说,分类法将来自:
Directory/Company X/1
Directory/Company X/2
Directory/Company X/3
Directory/Company X/4
Directory/Company X/5
Directory/Company X/6
Directory/Company X/7
Directory/Company X/8
Directory/Company X/9
Directory/Company X/10
Directory/Company X/info
到
Directory/Company X/Project 1_1
Directory/Company X/Project 2_2
Directory/Company X/Project 3_3
etc..
到目前为止,我有:
tell application "Finder"
-- Defining Pro Folders
set pro_folder to folder POSIX file "/Users/Jart/Desktop/test"
set all_pro_folders to every folder of pro_folder
-- Iterate through folders and check if folder name is greater than one character
repeat with x in all_pro_folders
repeat with y in x
-- Convert the folder name to a string and check if that string is longer than one character
set incomingName to folder ((y as alias) as text)
set incomingNameString to name of incomingName
if length of incomingNameString = 1 then
-- Set old name (number) to a new variable
set oldname to folder ((y as alias) as text)
set oldnameString to name of oldname
-- Do it again for the second part
set oldname2 to folder ((y as alias) as text)
set oldnameString2 to name of oldname2
-- Rename here
set name of y to "Project" & " " & oldnameString & "_" & oldnameString
end if
end repeat
end repeat
end tell
但是,该文件夹现在看起来像:
Directory/Company X/3
Directory/Company X/5
Directory/Company X/7
Directory/Company X/9
Directory/Company X/10
Directory/Company X/info
Directory/Company X/Project 1_1
Directory/Company X/Project 2_2
Directory/Company X/Project 4_4
Directory/Company X/Project 6_6
Directory/Company X/Project 8_8
为什么这样做?如何更改此代码以便重命名所有文件?如果需要,我可以转储事件/回复日志。
答案 0 :(得分:2)
Jart,主要问题是第二个循环,你需要循环遍历x文件夹变量的每个文件夹。循环文件夹似乎有效,但是当你重命名它们时会导致索引问题导致只读取每个第二个文件夹。
这是一个小小的改造。
tell application "Finder"
-- Defining Pro Folders
set pro_folder to folder POSIX file "/Users/Jart/Desktop/test"
set all_pro_folders to every folder of pro_folder
-- Iterate through folders and check if folder name is greater than one character
repeat with parent_folder in all_pro_folders
set counter to 0 -- reset a counter variable we use for the end of the name
set child_folders to every folder of parent_folder
repeat with current_folder in child_folders
set fold_name to the name of current_folder
log (fold_name)
if (the length of fold_name < 3) then -- this will allow names > 9
set counter to counter + 1 -- increment the counter every time we find valid folder
set new_name to "Project" & " " & fold_name & "_" & counter
log (new_name)
set the name of current_folder to new_name
end if
end repeat
end repeat
end tell
HTH