Мне нужно получить все (видимое) содержимое папки и ее подпапок в виде списка. Это возможно?Получить полное содержимое каталога с помощью AppleScript
ответ
Я уверен, что есть команда оболочки, которая может сделать это быстрее, но вот один из способов в чистом Applescript, который дает вам полный контроль над форматированием информации, которую вы хотите отобразить.
property kFileList : {}
tell application "Finder"
set source_folder to choose folder with prompt "Please select directory."
my createList(source_folder)
end tell
on createList(item_list)
set the the_items to list folder item_list without invisibles
set item_list to item_list as string
repeat with i from 1 to number of items in the the_items
set the_item to item i of the the_items
set the_item to (item_list & the_item) as alias
set this_info to info for the_item
set file_name to name of this_info
set end of kFileList to file_name
if folder of this_info is true then
my createList(the_item)
end if
end repeat
end createList
На стороне примечания есть также список файлов, содержащих список файлов, которые могут сделать это быстрее, чем Applescript.
ОБНОВЛЕНИЕ: В результате этого обсуждения здесь снова появляется функция, но на этот раз с использованием обновленного API. Это может, вероятно, может использовать некоторые очистки, но это работает каталогизация моего рабочего стола достаточно удобные (и это глубокая, глубокая папка для меня):
property kFileList : {}
tell application "Finder"
set source_folder to choose folder with prompt "Please select directory."
my createList(source_folder)
end tell
return kFileList
on createList(mSource_folder)
set item_list to ""
tell application "System Events"
set item_list to get the name of every disk item of mSource_folder
end tell
set item_count to (get count of items in item_list)
repeat with i from 1 to item_count
set the_properties to ""
set the_item to item i of the item_list
set the_item to ((mSource_folder & the_item) as string) as alias
tell application "System Events"
set file_info to get info for the_item
end tell
if visible of file_info is true then
set file_name to displayed name of file_info
set end of kFileList to file_name
if folder of file_info is true then
my createList(the_item)
end if
end if
end repeat
end createList
Я должен быть подписан на неправильные списки рассылки или отсутствую один, потому что эти Были внесены изменения API, и я никогда не слышал о них. Я использовал свой первый предлагаемый метод в десятках проектов в основном потому, что это был исходный код, предлагаемый Apple, и полное отсутствие ошибок с использованием этого (даже на момент написания) никогда не вызывало необходимости обновлять что-либо ,
Turnabout - честная игра, и мои извинения за злобный downvote для mmcgrail, и я заменяю его на upvote. Чтобы быть ясным, я никогда не думал, что ответ, данный mmcgrail, был неправильным. Это отличный однострочный метод, но я остался в стороне от моих уже высказанных комментариев. Но, скорее, это был его голос и его заявленный контекст, с которым я обиделся. В конце концов, это всего лишь код, и я думаю, что мы все здесь по той же причине: найти лучший способ делать то, что делаем. Кажется, у меня теперь есть своя версия, чтобы ее принять.
Cheers
Это больше, чем нужно. Я знаю, что это старый пост, но я хочу, чтобы вы оба видеть, как легко это может быть
tell application "Finder"
set file_list to entire contents of (choose folder with prompt "Please select directory.")
end tell
, если вы хотите, список имен файлов, то вы можете сделать это
tell application "Finder"
set file_list to name of every file of entire contents of (choose folder with prompt "Please select directory.")
end tell
Благодаря комментариям которые следуют за этим сообщением, я попросил группу экспертов по бизнесу рассмотреть этот вопрос и оценить наш ответ непредвзято, и я получил ответ:
«Как насчет оспы на обоих ваших домах? :-)
Да, все содержимое делает именно то, что вы говорите, - но оно легко задыхается от больших папок и берет навсегда (и день, если вы на 10.6). Это нормально для мелочей, таких как извлечение всех файлов одного вида из папки, которую вы знаете , будет содержать только небольшое количество файлов.
Рекурсивный метод также хорошо работает - но он использует «папку список», и словарь листинг он говорит, что это не рекомендуется, и мы не должны использовать его больше «
Так что я слышу от. заявляю, что я ошибался! Оба эти решения действительны, но имеют «оспу» или дыры в их использовании. Мои слова для Филиппа.Если он решит отредактировать свой ответ (потому что это единственный способ изменить мой голос), я буду рад вернуться и дать ему +1
права, поскольку массивный список {файла документа «FileName» папки «SubFolder» в папке «Папка» папки «имя пользователя» папки «Пользователи» загрузочного диска приложения «Finder», ad nauseum} и необходимости впоследствии обрабатывать *, что * гораздо полезнее, чем требовать голосовать за мою. –
Что нужно для обработки, у вас есть список и ваша ссылка на элементы по мере необходимости, т. Е. Псевдоним элемента в списке файлов, что вы делаете больше работы, чем нужно, поэтому я дал вам проголосовать за то, что я не отдал его вам из несмотря на то, что, как кажется, это то, что вы делаете – mcgrailm
, также ваш kFileList возвращает список имен файлов и не ссылается на то, откуда появился этот файл, и что затем вернуться через папку, чтобы выяснить, откуда они пришли? – mcgrailm
Ничего себе это довольно поздно, но я проверил, и он работает.
tell application "Finder" to set folder_root to (choose folder with prompt "Please select directory.")
set fl to {}
dump_folder(folder_root)
on dump_folder(f)
global fl
tell application "System Events" to set end of fl to (get the POSIX path of f)
tell application "Finder" to set nfl to (the items of the contents of f)
repeat with nf in nfl
dump_folder(nf as alias)
end repeat
end dump_folder
fl
- 1. Как получить содержимое каталога с помощью Express?
- 2. Как получить полное содержимое узла с помощью xpath & lxml?
- 3. Как получить полное содержимое веб-страницы с помощью python
- 4. Как получить полное содержимое файла с помощью apache-poi?
- 5. Как получить полное содержимое карты с помощью trello api?
- 6. Получить полное содержимое HTML из Android WebView
- 7. Получить полное имя каталога в Python
- 8. Получить содержимое каталога с помощью wildcast с FileSystemObject
- 9. прочитайте содержимое каталога с помощью сценария оболочки
- 10. jsPDF addHTML получить полное содержимое элемента прокрутки
- 11. Git - Получить содержимое определенного каталога
- 12. Как получить содержимое из каталога с помощью инструмента командного языка
- 13. iPhone: получить содержимое каталога «документы»
- 14. Android получить содержимое каталога с веб-сервера
- 15. Удалить содержимое каталога FTP с помощью CURL
- 16. Как удалить содержимое каталога с помощью ftw
- 17. Содержимое каталога каталога
- 18. Найти содержимое каталога
- 19. Получение каталога входного файла (Applescript)
- 20. Получить полное имя отправителя с помощью javamail
- 21. Заменить текст в applescript с помощью applescript
- 22. Как получить номер кадра с помощью Applescript
- 23. Как получить твит с помощью AppleScript
- 24. «Невозможно получить псевдоним» с помощью applescript
- 25. В AppleScript, как скопировать содержимое каталога в другой каталог, не удаляя существующие файлы целевого каталога?
- 26. Импортировать содержимое определенной папки в iTunes с помощью Applescript
- 27. Печать ПОЛНОЕ содержимое массива numpy
- 28. Содержимое каталога копирования
- 29. Включает ли window.onload полное содержимое?
- 30. rsync over ssh получить только содержимое каталога
смотрите мой пост – mcgrailm
я сделал правку на мой пост – mcgrailm
он пишет что-то вроде «не может получить каждый диск элемент ...» – user2159978