2015-04-21 3 views
1

Я пытаюсь скопировать скрипт, чтобы взять список файлов из текстового документа и прокрутить список приложений по строке, а затем сделать что-то с файлом. В этом случае он меняет метку в файле, но мы будем использовать ее в других случаях для перемещения файлов и т. Д.Applesscript: Чтение текстового файла для списка файлов

Он работает с тестовым файлом на моем рабочем столе, файлы отмечены фиолетовым ярлыком, но когда пытаясь запустить его в папку, я на самом деле нужно, чтобы он не с этим сообщением об ошибке:

error "Finder got an error: Can’t set 1 to 5." number -10006 from 1

текстовые файлы одинаковы по длине их содержания, за исключением.

Это может быть проблема с именами файлов, и если да, то как сделать сценарий более терпимым.

Вот сценарий:

set textFileContents to POSIX path of (choose file) 
set dataList to paragraphs of (read textFileContents as «class utf8») 
tell application "System Events" 

    repeat with thisFileName in dataList 


     tell application "Finder" to set (label index of files whose name is thisFileName) to 5 
    end repeat 

end tell 

Любая помощь будет оценена, спасибо.

1080074 3.tif 
1080074 2.tif 
1080069_A1.tif 

Вот окончательный код от решения этой проблемы и некоторые дальнейшей работы я сделал.

Спасибо @Mark Setchell & @ jackjr300 за помощь всем пациентам.


set justpath to POSIX path of (choose folder with prompt "Select the Folder with Files You Want to Use") set textFileContents to (choose file with prompt "Select the list of files") set dataList to paragraphs of (read textFileContents as «class utf8») tell application "Finder" repeat with FileName in dataList try -- need a try block to ignore error, in case that the file has been moved or deleted set label index of (justpath & FileName as POSIX file as alias) to 5 end try end repeat end tell

ответ

0

вы должны указать папку, потому что искатель не имеет текущей папки, кроме Desktop если не указать папка.

set textFileContents to choose file 
set dataList to paragraphs of (read textFileContents as «class utf8») 
set theFolder to "/Users/jack/Desktop/xxx/yyy" as POSIX file as alias -- change it to the path of your folder 
tell application "Finder" 
    repeat with thisFileName in dataList 
     try -- need a try block to ignore error, in case that the file has been moved or deleted 
      set label index of file thisFileName of theFolder to 5 
     end try 
    end repeat 
end tell 

Изменить путь в третьей строке этого сценария

-

Если текстовый файл содержит полный путь к файлу, вы можете использовать этот скрипт.

set textFileContents to choose file 
set dataList to paragraphs of (read textFileContents as «class utf8») 
tell application "Finder" 
    repeat with thisPath in dataList 
     try -- need a try block to ignore error, in case that the file has been moved or deleted 
      set label index of (thisPath as POSIX file as alias) to 5 
     end try 
    end repeat 
end tell 
+0

Это работает очень хорошо. Спасибо!! – Izzy

+0

Follow Up: Есть ли способ получить полный путь к каталогу из текстового файла, который мы выбираем, а не путь к имени файла, а только каталог, в котором он находится? Например, мы будем называть строку justPath. Тогда ваш скрипт может быть изменен до: 'set label index of (justpath & thispath как файл POSIX как псевдоним) до 5' – Izzy

+0

или будет ' set label index of (thispath of (justpath) как файл POSIX как псевдоним) до 5 , аналогично этому https://discussions.apple.com/thread/4574615?tstart=0 – Izzy

1

Вы, кажется, в то паразитный tell application "System Events". Он работает следующим образом:

set FileName to POSIX path of (choose file) 
set FileRecords to paragraphs of (read FileName) 
repeat with ThisFileName in FileRecords 
    say ThisFileName 
    tell application "Finder" to set (label index of files whose name is thisFileName) to 5 
end repeat 

Обратите внимание, что мой тестовый файл не UTF8.

Update

Кстати, если все, что вы хотите сделать, это установить цвет метки на некоторые файлы, это может быть проще сделать это из терминала и не беспокоиться с Applescript. Допустим, вы запустите терминал и перейдите на рабочий стол, как этот

cd Desktop 

, то вы можете изменить ярлыки всех файлов на рабочем столе (и в подкаталоги), чьи имена содержат «Freddy», а затем «Лягушка» (т.е. «fileForFreddyFrog.txt», «файл с Фредди Frog.php»)

find . -name "*Freddy*Frog*" -exec xattr -wx com.apple.FinderInfo "0000000000000000000700000000000000000000000000000000000000000000" {} \; 
+0

Благодарим за отзыв. Я все еще получаю ту же ошибку, но теперь мой компьютер на самом деле говорит с текстом в речь имя первого файла в текстовом документе, а затем я получаю тот же код ошибки. Вот список файлов в моем текстовом файле, который не работает. Может быть, это имя файла. 1030172.tif 1080074 3.tif 1080074 2.tif 1080069_A1.tif – Izzy

+0

Так что если вы закомментировать строку 'сказать finder' приложения, добавив два минус знаков в начале, как это' - сказать applcation искатель .. .', он правильно говорит имена всех файлов в текстовом документе? Также добавьте 'beep' непосредственно над строкой' end repeat'. –

+0

Пожалуйста, нажмите 'edit' под своим вопросом и вставьте содержимое файла там - перед каждой строкой с 4 пробелами. –

Смежные вопросы