Applescript Скопируйте файл в новую папку

Мне нужно создать 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

Ответ 1

В общем:

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    

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

Ответ 2

Хитрость с 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

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

Ответ 4

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

    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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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