OS X - AppleScript Câu hỏi về việc di chuyển tệp hàng ngày sang thư mục khác (thư mục khác nhau)


4

Tôi hiện đang sử dụng cái này ( http://lifehacker.com/193778/doad-of-the-day--auto+applescript-tickler-file ) cho một hệ thống tệp tickler và thiết lập nó trong Dropbox của tôi (để nó hoạt động trên hệ thống). Chỉ có một vài điều từ làm cho nó hoàn hảo. Nếu bất cứ ai có thể giúp tôi ra đó sẽ là tuyệt vời.

Những gì tôi đang theo là một tập lệnh hoặc quy trình làm việc sẽ lấy nội dung thư mục cho ngày hôm trước (chúng thay đổi mỗi ngày và được đánh số) và chuyển chúng sang ngày hiện tại. Vì vậy, sau đó tôi có thể đặt nó làm báo thức để thực hiện vào buổi sáng mỗi ngày.

Cảm ơn rất nhiều.

Câu trả lời:


2

Nếu tôi hiểu chính xác yêu cầu của bạn, thì kịch bản này sẽ làm những gì bạn muốn. Đảm bảo thay đổi tên người dùng trên dòng đầu tiên thành tên người dùng của bạn.

set username to "lizzan"

set cy to (year of (current date)) as integer
set cm to (month of (current date)) as integer
set cd to (day of (current date)) as integer

set yd to yesterday(cy, cm, cd)

set yy to item 1 of yd
set ym to item 2 of yd
set yd to item 3 of yd


set yFolder to "Macintosh HD:Users:" & username & ":Documents:To Do:" & yy & ":" & ym & ":" & yd
set cFolder to "Macintosh HD:Users:" & username & ":Documents:To Do:" & cy & ":" & cm & ":" & cd

tell application "Finder"
    move every file of folder yFolder to cFolder
end tell

on yesterday(y, m, d)
    set d to d - 1

    if d  0 then
        set m to m - 1
        if m  0 then
            set y to y - 1
            set m to 12
        end if
        set thirtyones to {1, 3, 5, 7, 8, 10, 12}
        set thirties to {4, 6, 9, 11}
        if m is in thirtyones then
            set d to 31
        else if m is in thirties then
            set d to 30
        else if leapyear(y) then
            set d to 29
        else
            set d to 28
        end if

    end if

    set yd to {y, m, d}
    return yd

end yesterday

on leapyear(y)
    if y mod 4 is 0 then
        if y mod 100 is 0 then
            if y mod 400 is 0 then
                return true
            end if
            return false
        end if
        return true
    end if

    return false

end leapyear

Hãy cẩn thận: Tập lệnh sẽ thất bại (và chỉ có thể di chuyển một số tệp của bạn) nếu đã có một tệp có cùng tên trong thư mục mà nó đang di chuyển. Nếu bạn muốn thay thế các tệp trong trường hợp đó và tránh thất bại, hãy thêm with replacingvào cuối dòng 18 ( move every ... to cFolder with replacing).

Chỉnh sửa để thêm: Ồ, chỉ cần thấy rằng bạn đã thiết lập nó trong Dropbox thay vì trong thư mục Documents. Chỉ cần thay đổi đường dẫn trên dòng 14 và 15 để phản ánh đường dẫn bạn đang sử dụng và nó sẽ ổn.


Tuyệt vời! Nó đã làm việc! Tôi cần phải thực hiện một vài thay đổi, nhưng có! Bạn thật tuyệt vời - Cảm ơn bạn !!! Vâng, tôi đã thay đổi vị trí thành Dropbox và tôi cũng đã thay đổi Macintosh HD thành Main HD và tất cả đều tốt.
Sulcalibur

@Sulcalibur Cảm ơn, tôi rất hân hạnh được giúp đỡ - tôi sẽ không làm điều đó nếu tôi không nghĩ nó sẽ vui ... =)
Lizzan

2

Một giải pháp rất đơn giản là Ứng dụng Automator (quy trình làm việc chạy độc lập). Mất khoảng 15 giây (theo nghĩa đen) để thiết lập quy trình công việc này: văn bản thay thế


Mặc dù chắc chắn hữu ích theo cách riêng của nó, tôi không nghĩ rằng đây là điều OP muốn nó làm. Quy trình công việc này sẽ di chuyển các tệp được tạo vào ngày cuối cùng, nhưng từ những gì tôi hiểu về hệ thống tệp tickler, bạn đặt các tệp trong các thư mục cho ngày bạn phải xử lý chúng. Nếu không được xử lý vào ngày hôm đó, họ nên được chuyển đến ngày hiện tại để ngăn chặn họ bị lãng quên. Vì vậy, các tập tin để di chuyển có thể đã được tạo ra bất cứ lúc nào, thực sự.
Lizzan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.