AppleScript:如何获取文件夹中没有隐藏文件的文件? [英] AppleScript : How to get files in folder without hidden files?

查看:117
本文介绍了AppleScript:如何获取文件夹中没有隐藏文件的文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实际上有两个问题.

当我尝试在文件夹中获取文件时,如何排除.DS_STORE,Icon等隐藏文件? 我已经尝试过"没有隐形内容",但它似乎无法正常工作.

How to exclude hidden files like .DS_STORE, Icon when I try to get files in folder ? I've tried "without invisibles" but it seems not working.

如果已经存在,如何将var the_new_folder设置为现有文件夹?

How to set my var the_new_folder as an existing folder if already exists ?

感谢答案.

我的代码:

--
-- Get all files in a selected folder
-- For each file, create a folder with the same name and put the file in
--

tell application "Finder"
    set the_path to choose folder with prompt "Choose your folder..."
    my file_to_folder(the_path)
end tell

on file_to_folder(the_folder)
    tell application "Finder"

        -- HELP NEEDED HERE
        -- HOW TO EXCLUDE HIDDEN FILES (Like Icon, .DS_STORE, etc)
        set the_files to files of the_folder

        repeat with the_file in the_files

            -- Exclude folder in selection
            if kind of the_file is not "Folder" then
                set the_path to container of the_file
                set the_file_ext to name extension of the_file

                -- Remove extension of the file name
                set the_file_name to name of the_file as string
                set the_file_name to text 1 thru ((offset of the_file_ext in (the_file_name)) - 2) of the_file_name

                -- Make the new folder with the file name
                try
                    set the_new_folder to make new folder at the_path with properties {name:the_file_name}
                on error
                    -- HELP NEEDED HERE
                    -- HOW TO SET the_new_folder AS THE EXISTING FOLDER
                end try

                -- Move the file in the new folder
                move the_file to the_new_folder

            end if
        end repeat

    end tell
end file_to_folder

tell application "Finder"
    (display dialog ("It's done!") buttons {"Perfect!"})
end tell

推荐答案

使用System Events上下文而不是Finder:

  • 使用AppleShowAllFiles首选项 [1]

通常要快得多.

System Events上下文中使用file/folder对象的visible属性,您可以可预测地确定所有所有项,包括隐藏的项(默认情况下),或者只有 visible 个(带有whose visible is true):

Using the visible property of file / folder objects in the System Events context allows you to predictably determine either all items, including hidden ones (by default), or only the visible ones (with whose visible is true):

# Sample input path.
set the_path to POSIX path of (path to home folder)

tell application "System Events"

    set allVisibleFiles to files of folder the_path whose visible is true

end tell

只需省略whose visible is true即可包含隐藏文件.

Simply omit whose visible is true to include hidden files too.

用于引用预先存在的文件夹或根据需要创建它的代码与Finder上下文中的代码基本上相同:

The code for either referencing a preexisting folder or creating it on demand is essentially the same as in the Finder context:

# Sample input path.
set the_path to POSIX path of (path to home folder)

# Sample subfolder name
set the_subfolder_name to "subfolder"

tell application "System Events"

    if folder (the_path & the_subfolder_name) exists then
        set subfolder to folder (the_path & the_subfolder_name)
    else
        set subfolder to make new folder at folder the_path ¬
          with properties {name: the_subfolder_name}
    end if

end tell


[1] 为了可预测地排除隐藏的项目,基于Finder的解决方案不仅麻烦,而且具有巨大的副作用:


[1] In order to predictably exclude hidden items, a Finder-based solution is not only cumbersome but has massive side effects:

  • 您需要确定AppleShowAllFiles首选项(defaults read com.apple.Finder AppleShowAllFiles)的当前状态,
  • 然后将其关闭.
    • 然后 kill Finder使更改生效(它会自动重新启动)-这将在视觉上造成破坏
    • You need to determine the current state of the the AppleShowAllFiles preference (defaults read com.apple.Finder AppleShowAllFiles),
    • then turn it off.
      • then kill Finder to make the change take effect (it restarts automatically) - this will be visually disruptive
      • 然后再次杀死Finder ,以便恢复的值再次生效.
      • then kill Finder again so that the restored value takes effect again.

      这篇关于AppleScript:如何获取文件夹中没有隐藏文件的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆