2016-10-28 1 views
0

Я запускаю компьютерную лабораторию в Университете Денвера. У нас возникла проблема с нашей системой резервного копирования, и мне нужно скопировать/дублировать все файлы на (Apple) компьютерах на USB-накопитель, который я держу за своим столом.Как скопировать файлы на USB с помощью скрипта apple, который работает на USB?

На данный момент мне нужно подключить USB к каждому из компьютеров и вручную дублировать каждый из элементов папки «документы» и поместить их в новую папку на моем USB-устройстве. Мне нужен сценарий Apple, который я установил на свой USB-диск, вставляю свой USB-диск в компьютер, активирую приложение, и он создаст новый каталог с именем «(User name) upload» и поместит все элементы в этот каталог. Вот то, что я до сих пор:

tell application "Finder" 
set theFolder to disk/Volumes/Lexar/stuff 
set Files1 to Users/matanya/documents 
tell application "Finder" 
    try 
     duplicate file Files1 to theFolder 
    on error 
     tell application "Finder" 
      display dialog "Transfer Failed" 
     end tell 
    end try 
end tell 

одна из проблем является то, что каждый раз, когда я бегу сценарий, я получаю сообщение об ошибке, которое говорит, что переменная «Тома» не определен. Еще одна причина в том, что я боюсь, что когда я подключу этот скрипт к другому компьютеру, он не найдет папку «matanya», которая у меня есть в моем каталоге. Есть ли способ назвать это «домом» или чем-то еще?

ответ

0

Прежде всего Finder принимает только пути HFS - начиная с диск имя и двоеточие разделены. Папка Volumes не имеет значения при использовании путей HFS.

path to documents folder всегда указывает на папку Documents текущего пользователя.

set theFolder to "Lexar:stuff:" 
set documentsFolder to path to documents folder 
tell application "Finder" 
    if not (exists disk "Lexar") then 
     display dialog "Insert disk 'Lexar'" buttons "Cancel" default button 1 
    end if 
    try 
     duplicate documentsFolder to folder theFolder 
    on error 
     display dialog "Transfer Failed" 
    end try 
end tell 

Более сложные эта версия создает папку с коротким именем пользователя текущего пользователя и дублирует папку документов в этой отдельной папке

set theFolder to "Lexar:stuff:" 
set currentUser to short user name of (system info) 
set documentsFolder to path to documents folder 
tell application "Finder" 
    if not (exists disk "Lexar") then 
     display dialog "Insert disk 'Lexar'" buttons "Cancel" default button 1 
    end if 
    if not (exists folder currentUser of folder theFolder) then 
     make new folder at folder theFolder with properties {name:currentUser} 
    end if 
    try 
     duplicate documentsFolder to folder currentUser of folder theFolder 
    on error 
     display dialog "Transfer Failed" 
    end try 
end tell 

С launchd вы даже могли автоматически при запуске этого сценария Вставляется USB-накопитель.

+0

Спасибо. Это помогло мне сузить то, что происходило. Единственная проблема заключается в том, что сценарий все еще не работает. Хорошо, что я знаю, что это не удается в дублирующей части скрипта. Должен ли я сначала отправлять файлы на диск, а затем передавать или это проблема пространства, где она не будет дублироваться, если у меня недостаточно места? –

+0

Что не работает? Вы можете напечатать фактическое сообщение об ошибке, а не просто «Сбой». – vadian

+0

Извините, я получил его на работу. Спасибо. все, что происходило, это файлы, которые я пытался передать, были большими для моего USB. –

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