用于管理Mac OS X(10.6)上的日期空间以进行下载的脚本

时间:2011-02-06 20:54:13

标签: macos date applescript

过去我创建了一个applescript for datedspace但不再运行了。

我想创建一个可以查看文件夹~/Documents/pool/~/Downloads内的AppleScript。

假设我们是在2011年2月7日。

  1. 检查~/Documents/2011/02/07/是否存在
  2. 如果没有创建~/Documents/2011/02/07/
  3. ~/Documents/pool/内的文件和/或文件夹移至~/Documents/2011/02/07/
  4. 加成

    1. ~/Documents/2011/中创建一个名为index.mdown并包含以下格式的文本文件
    2. # Index 2011
      ## January
      […] 
      ## February 
      * 2011-02-07: Foo.jpeg 
      * 2011-02-07: Bar/ 
      

      欢迎提供领先或不完整的解决方案。

      以前的脚本

      -- Script to automaticaly save documents in a date space.
      -- Karl Dubost - http://www.la-grange.net/ - <karl@*******> - 2001 ©
      -- Feel free to distribute it and modify it
      -- Feel free to send me improvements 
      -- ********************************************************
      -- Version 1.1 2001-03-30
      --      Add control on existence of folders year and month
      --      Make it more general based on Startup Disk
      -- Version 1.0 2001-03-29
      --      Creation of the code
      --      Thanks to Bill Briggs
      --      http://maccentral.macworld.com/columns/briggs.shtml
      -- ********************************************************
      on adding folder items to this_folder after receiving added_items
          tell application "Finder"
              set yourDisk to name of startup disk as string
          end tell
          set todaysDate to (current date)
          set {d, m, y} to {day, month, year} of todaysDate
          set monthList to {January, February, March, April, May, June, ¬
              July, August, September, October, November, December}
      
          repeat with i from 1 to 12
              if m = (item i of monthList) then
                  set monthString to text -2 thru -1 of ("0" & i)
                  exit repeat
              end if
          end repeat
      
          set y to y as string
          set dayString to text -2 thru -1 of ("0" & d)
          set dayString to dayString as string
          set datedFolder to yourDisk & ":Documents:" & y & ":" & monthString & ":" & dayString & ":" as string
          set monthFolder to yourDisk & ":Documents:" & y & ":" & monthString & ":" as string
          set yearFolder to yourDisk & ":Documents:" & y & ":" as string
          set rootFolder to yourDisk & ":Documents:" as string
      
          tell application "Finder"
              if (folder datedFolder exists) then
                  repeat with oneFile in added_items
                      move oneFile to folder datedFolder
                  end repeat
              else if not (folder yearFolder exists) then
                  make new folder at folder rootFolder with properties {name:y}
              else if not (folder monthFolder exists) then
                  make new folder at folder yearFolder with properties {name:monthString}
              else
                  make new folder at folder monthFolder with properties {name:dayString}
                  repeat with oneFile in added_items
                      move oneFile to folder datedFolder
                  end repeat
              end if
          end tell
      end adding folder items to
      

1 个答案:

答案 0 :(得分:2)

我希望这会足够好:-): 在一些基本命令行应用程序的帮助下,它在〜/ Documents文件夹中创建子文件夹(mkdir -p:它不会覆盖现有目录!),在那里移动文件(mv -n:不覆盖同名文件),然后创建包含addedItems名称的月度日志文件,最后创建一个index.mdown文件,其中包含所有月度日志文件,如下所示:

2011/01/03: testfile9
2011/02/01: testfile10
2011/02/07: testfile11

现在继续将它附加到您的文件夹,试一试! (可能取消注释baseFolder并将其更改为/ tmp / test或其他内容,或者更改为thisFolder的POSIX路径,如果您希望它清理它附加到的文件夹。)

property dateFormatForFolder : "+%Y/%m/%d"
property dateFormatForMonthlyLog : "+%Y/%m/"
property dateFormatForYearlyLog : "+%Y/"

on adding folder items to thisFolder after receiving addedItems
set baseFolder to POSIX path of (path to documents folder)
set todaysFolder to do shell script "/bin/date '" & dateFormatForFolder & "'"
set monthsFolder to do shell script "/bin/date '" & dateFormatForMonthlyLog & "'"
set yearsFolder to do shell script "/bin/date '" & dateFormatForYearlyLog & "'"
set fullPath to baseFolder & todaysFolder

createFolder(fullPath)

repeat with i from 1 to number of items in addedItems
set oneItemsPath to (quoted form of POSIX path of item i of addedItems)

try
    moveToFolder(fullPath, oneItemsPath)
end try

set fileName to name of (info for item i of addedItems)
set logThis to todaysFolder & ":   " & fileName
do shell script "echo " & logThis & " >> " & baseFolder & monthsFolder & "log.txt"

end repeat

do shell script "find " & baseFolder & yearsFolder & " -type f -name 'log.txt' -print0 | xargs -0 cat > " & baseFolder & yearsFolder & "index.mdown"

end adding folder items to


on createFolder(fullPath)
do shell script "/bin/mkdir -p " & quoted form of fullPath
end createFolder

on moveToFolder(fullPath, oneItemsPath)
do shell script "/bin/mv -n " & oneItemsPath & " " & fullPath
end moveToFolder