Chọn tệp ngẫu nhiên trong AppleScript


0

Tôi đang cố gắng tạo một tập lệnh có thể chọn / hiển thị / mở tệp ngẫu nhiên từ một thư mục và các thư mục con của nó. Kịch bản sau:

tell application "Finder"
    get some file of (folder "/Volumes/Expansion Drive/Photos")
end tell

Đưa ra lỗi sau:

lỗi "Trình tìm kiếm gặp lỗi: Không thể nhận thư mục \" / Tập / Ổ đĩa mở rộng / Ảnh \ "." số -1728 từ thư mục "/ Tập / Ổ đĩa mở rộng / Ảnh Cảnh

Cú pháp đúng là gì? Đó là iMac cuối năm 2013 với OS X 10.10.5.


Lưu ý: Thư mục nằm trên ổ đĩa NTFS trên ổ cứng ngoài.
kích thích

Câu trả lời:


1

Vì bạn đang sử dụng cú pháp đường dẫn POSIX, bạn phải sử dụng POSIX fileđể lấy đối tượng tại đường dẫn đó:

tell application "Finder"
    get some file of (folder (POSIX file "/Volumes/Expansion Drive/Photos"))
end tell

0

Sử dụng Finder để có được danh sách các tập tin có thể có vấn đề cũng như dài dòng. Tôi khuyên bạn nên quay lại các công cụ unix như thế này ...

#
# Get list of files...
#   For example: all .txt files (not folders) under Downloads and below.
#
try
    set filelist to (do shell script "find ~/Downloads -type f -name '*.txt'")
on error eStr
    # Do something here...
    log eStr
end try

# Count the results
set n to count every paragraph in filelist

# Get a random no
set n to (get random number from 1 to n)

# Get the nth item from the results...
get paragraph n of filelist

0

Kiểm tra một đoạn script ngắn (từ một bên khác) để xem cách bạn có thể sử dụng để đổi tên các tệp theo thứ tự tăng dần. Bằng cách này bạn có thể hiểu được cách các chỉ mục hoạt động. Tôi đã thực hiện các kịch bản dưới đây mà làm việc cho tôi. Nó đặt chỉ mục của các tập tin trong thư mục. Trong thư mục tôi có mỗi tệp có tên từ file1 .. file2 .. file3 ..

Kịch bản hoạt động như sau: đặt chỉ mục dựa trên số lượng tệp, sau đó chọn một số ngẫu nhiên giữa số thấp nhất cho chỉ mục của tệp và sau đó tôi sử dụng GUI với "Sự kiện hệ thống" để báo cho thiết bị đầu cuối mở tệp với số ngẫu nhiên.

Lưu ý: Tôi tận dụng một công cụ tuyệt vời từ Terminal rằng với tab bạn có thể hoàn thành ghi vào cuối tệp dự định để không cần phải nhập phần còn lại. Cách liên kết

set text item delimiters to "."
tell application "System Events"
    tell application "Finder"
        set all_files to every item of alias "Macintosh:Users:Home:Documents:terminal:folder3notes" as list
        repeat with index from 1 to the count of all_files
        end repeat
        set randomnumber to (random number from 2 to index)
        say randomnumber
    end tell
    tell application "Terminal" to activate
    keystroke "open /Users/Home/documents/terminal/folder3notes/file"
    keystroke randomnumber
    key code 48
    delay 0.5
end tell

Tại sao không làm điều đó trong một do shell script?
JBis
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.