2013-08-27 49 views
0

我正在尝试编写一个脚本,用于重命名子文件夹中的文件夹。换句话说,该分类将走向:在AppleScript中批量重命名文件夹,将只更改每个其他文件夹的名称

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

是存在的,这是标记的原因[标签:VBA] ?我没有看到它(?) – enderland

+0

没有applescript与vba有什么关系? –

+0

jart,vba与applescript无关,最好不要在这些问题中使用该标签。 – adamh

回答

2

Jart,主要问题是在第二个循环中,您需要循环遍历x文件夹变量的每个文件夹。它似乎循环通过该文件夹的工作,但当你重命名它们导致索引问题导致只读取每个第二个文件夹。

这里有一点改进。

  • 将您的变量从y和x更名为不太神秘。
  • 更改了长度测试以支持名称> 9.
  • 我不确定新名称末尾的项目,以及它是否应该是递增数字。 (你可以轻松地恢复)
  • 留在供您参考日志调用,这些都可以帮助调试东西
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

+0

再次感谢!真的很感谢你帮助我。为了将来的参考,哪里会是了解更多关于AppleScript的好地方?它似乎非常有用。是否还有某种词汇表? –

+0

不用担心。我会说继续做你的工作,试图自动化和解决问题,并复制和阅读其他applescripts。 Applescript语言指南是一个很好的参考:https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/AppleScriptLanguageGuide.pdf。或者查看亚马逊的概述类型书籍,当然谷歌;-) – adamh

相关问题