使用applescript我想将文件夹中的每个文件移动到根文件夹

时间:2012-09-09 12:10:45

标签: applescript

我一直在尝试制作一个脚本,将文件夹中的每个文件移动到根文件夹以包含每个子文件夹。我不想创建一个新文件夹只是将其移动到根文件夹。

我希望能够选择该文件夹,然后仅在该特定文件夹上完成操作。

原因是组织,我的确切情况是我有超过TB的电影和文件夹内的文件夹中的文件。我想要根文件夹中的所有这些文件,以便我可以按照我认为合适的方式组织它们。此外,我想复制和删除而不是移动,因为研究让我相信是最好的路线。

好吧,我无法让脚本工作,但我确实找到了一个工作流程的链接,它正是我正在寻找的:

http://www.macworld.com/article/1160660/automator_filesfromsubfolders.html


我上面更新了此部分以供历史记录,此虚线之间的所有内容都是我在编辑后删除的内容

我试图对下面的这个脚本进行逆向工程,但是,我发现,但是,我无法让它像我想的那样工作。任何和所有的帮助都会得到很大的帮助,我对脚本非常陌生,而且我已经陷入困境。

第二次尝试 告诉应用程序“finder”         将main_folder设置为(选择带有提示的文件夹“选择主文件夹”)         将sub_folders设置为main_folder的文件夹         在sub_folders中重复each_folder         移动(each_folder的每个文件)到main_folder并替换         结束重复         尝试         结束尝试         结束告诉

第一次尝试 告诉应用程序“Finder” 将sourceFolder设置为“MOVE ME”文件夹 - 磁盘“blah”等。  我的moveFilesFrom(sourceFolder)  结束告诉

on moveFilesFrom(thisFolder) 告诉应用程序“Finder” 将filesToMove设置为thisFolder的每个文件 在filesToMove中重复aFIle  将aFIle移动到文件夹destFolder 结束重复 将subFolders设置为(thisFolder的每个文件夹) 在子文件夹中使用aFolder重复 我的moveFilesFrom(aFolder) 结束重复 结束告诉 结束moveFilesFrom

当我在一个包含大量信息和子文件夹的文件夹上使用它时,查找器超时,我昨天在测试文件夹上使用它并且它没有问题,但是实际上更小。 < / p>

我现在正在使用adayzdone提供的这个脚本

    set myFolder to (choose folder with prompt "choose the main folder")
    tell application "Finder"
    set myfiles to get every item of (entire contents of folder myFolder) whose kind ≠ "Folder"
    move myfiles to myFolder
    end tell

3 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

set myFolder to (path to desktop as text) & "testFolder"
tell application "Finder"
    set myFiles to get every item of (entire contents of folder myFolder) whose kind ≠ "Folder"
    move myFiles to myFolder
end tell

或者您可以使用像Lri建议的shell脚本:

set myFolder to quoted form of (choose folder with prompt "choose the main folder")'s POSIX path
do shell script "cd " & myFolder & "; find . -type f -exec mv {} " & myFolder & " \\;"

答案 1 :(得分:1)

文件夹具有entire contents属性:

tell application "Finder"
    set f to choose folder
    move files of entire contents of f to f
end tell

你也可以在shell中使用find

cd ~/Movies/Folder/; find . -type f -exec echo mv '{}' . \;

答案 2 :(得分:0)

快速递归子例程将处理此问题:

set theFolder to POSIX path of (choose folder with prompt "Choose a folder")

tell application "System Events"
    set theFiles to my recursiveSearch(folder theFolder)
    move theFiles to folder theFolder
end tell

on recursiveSearch(theFolder)
    tell application "System Events"
        set theFiles to every file of theFolder whose visible is true
        set theSubFolders to every folder of theFolder
        repeat with thisFolder in theSubFolders
            set theFiles to theFiles & my recursiveSearch(thisFolder)
        end repeat
        return theFiles
    end tell
end recursiveSearch

如果您要完成其他事情(例如,删除空的子文件夹,仅移动特定种类的文件等),则很容易进行修改。让我知道是否需要调整。