Applescript Скопировать файл в новую папку - PullRequest
10 голосов
/ 23 мая 2009

Мне нужно создать AppleSript, который будет копировать указанные файлы из одной папки во вновь созданную папку.

Эти файлы должны быть указаны в редакторе AppleScript, что-то вроде:

start

fileToBeMoved = "Desktop/Test Folder 1/test.doc"
newfoldername = "Test Folder 2"

make newfolder and name it 'newfoldername'
copy 'fileToBeMoved' to 'newfolder'

end

Ответы [ 8 ]

10 голосов
/ 26 мая 2009

В целом:

tell application "Finder"
  make new folder at alias "Macintosh HD:Users:user:Desktop:" with properties {name:"Test Folder 2"}
  copy file "Macintosh HD:Users:user:Desktop:Test Folder 1:test.doc" to folder "Macintosh HD:Users:user:Desktop:Test Folder 2"
end tell

Вы можете добавить имена переменных, которые представляют файлы и пути POSIX.

Очевидно, что символ двоеточия (:) является зарезервированным символом для папок и имен файлов.

set desktopFolder to "Macintosh HD/Users/user/Desktop/"
set desktopFdrPosix to quoted form of POSIX path of desktopFolder
set newFolderName to "Test Folder 2"
set destinationFdrPosix to quoted form of desktopFdrPosix & POSIX file newFolderName
set sourceFilename to "Test Folder 1/test.doc"
set sourceFnPosix to quoted form of desktopFdrPosix & POSIX file sourceFilename

tell application "Finder"
  make new folder at alias desktopFdrPosix with properties {name:newFolderName}
  copy file sourceFnPosix to folder destinationFdrPosix
end tell    

Вы также можете добавить проверку ошибок, если папка назначения уже существует.

5 голосов
/ 26 мая 2009

Уловка AppleScript заключается в том, что перемещение файлов выполняется с использованием псевдонимов.

Более реалистично было бы проще создать сценарий оболочки, который можно запустить из AppleScript с помощью do shell script, если вы используете Automator или что-то подобное.

#!/bin/sh

fileToBeMoved="$HOME/Desktop/Test Folder 1/test.doc"
newFolderName="Test Folder 2"
mkdir "$newFolderName"
cp -a "$fileToBeMoved" "$newFolderName"
3 голосов
/ 20 августа 2009
set home_path to path to home folder as string
set work_folder to alias (home_path & "AutomationAppleScript:ScreenShots:")
tell application "Finder"
    duplicate every file of work_folder to folder "Archive" of home
end tell
1 голос
/ 19 мая 2011

Работает для копирования на подключенный сетевой том:

    mount volume "afp://compname.local/mountpoint"
    tell application "Finder"
      duplicate file "MyTextFile.txt" of folder "Documents" of home to disk "mountpoint"
      eject "mountpoint"
    end tell
0 голосов
/ 28 марта 2014

Простой способ сделать это, как показано ниже:

set home_path to path to home folder as string
set work_folder to alias (home_path & "AutomationAppleScript:ScreenShots:")
tell application "Finder"
    duplicate every file of work_folder to folder "Archive" of home
end tell
0 голосов
/ 15 января 2014

Я использовал решение сценария оболочки Chealions. Не забудьте сделать исполняемый файл скрипта с помощью: sudo chmod u+x scriptFilename

Также уберите пробел между знаком = в назначениях переменных. Не будет работать с пробелами, например: newFolderName="Test Folder 2"

0 голосов
/ 23 марта 2013
tell application "Finder"
    make new folder at desktop with properties {name:"folder"}
    duplicate POSIX file "/usr/share/doc/bash/bash.html" to result
end tell

POSIX file ((system attribute "HOME") & "/Documents" as text)
tell application "Finder" to result

tell application "Finder" to duplicate (get selection) to desktop replacing yes

-- these are documented in the dictionary of System Events
path to home folder
POSIX path of (path to documents folder)
path to library folder from user domain
path to desktop folder as text

-- getting files as alias list is faster
tell application "Finder"
    files of entire contents of (path to preferences folder) as alias list
end tell
0 голосов
/ 22 марта 2013

Если вы ищете синхронизацию, вы можете запустить следующий скрипт оболочки в вашем AppleScript:

rsync -a /Users/username/folderToBeCopiedFrom /Volumes/folderToBeCopiedTo/

...