2009-05-23 11 views
9

मुझे एक ऐप्पलस्ट्रिप बनाने की आवश्यकता है जो निर्दिष्ट फ़ाइलों को एक फ़ोल्डर से नए बनाए गए फ़ोल्डर में कॉपी करेगा।एप्पलस्क्रिप्ट एक नए फ़ोल्डर में फ़ाइल कॉपी करें

start 

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

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

end 

उत्तर

4

AppleScript के साथ चाल है कि चलती फ़ाइलों उपनाम का उपयोग किया जाता है:

इन फ़ाइलों को तो जैसे कुछ AppleScript संपादक में निर्दिष्ट किया जाना चाहिए।

अधिक यथार्थ रूप से एक शेल स्क्रिप्ट बनाना आसान हो सकता है जिसके बजाय आप do shell script का उपयोग कर ऐप्पलस्क्रिप्ट से चला सकते हैं यदि आप ऑटोमेटर या कुछ इसी तरह का उपयोग कर रहे हैं।

#!/bin/sh 

fileToBeMoved = "~/Desktop/Test Folder 1/test.doc" 
newFolderName = "Test Folder 2" 
mkdir $newFolderName 
cp $fileToBeMoved $newFolderName 
+0

इसके applescript लोगों पर इस विधि का उपयोग करने के कारण कभी-कभी आप अनुमति संबंधी समस्याएं हो सकती अच्छा और इस तरह से मदद करता है तो मदद करता है। –

+0

इसके डाउनसाइड्स हैं: यदि कॉपी अधिक समय लेती है तो उपयोगकर्ता को प्रगति पट्टी नहीं दिखाई देगी। उपयोगकर्ता, उसी कारण से, रद्द नहीं कर सकता है। शेल कमांड के साथ इन परिचालनों का समर्थन करना केवल खोजक को ऐसा करने से बहुत कठिन होगा। खोजक को अपनाने के नकारात्मक पक्ष, हालांकि: यदि उपयोगकर्ता प्रतिस्थापन "खोजक" ऐप का उपयोग करना चुनता है, तो एप्पलस्क्रिप्ट ऑपरेशन विफल हो सकता है (इस बारे में निश्चित नहीं है, शायद इस पर निर्भर करता है कि प्रतिस्थापन कितना अच्छा लिखा गया है)। –

+1

खोजक का उपयोग करने के लिए एक और प्लस: यदि गंतव्य आइटम मौजूद है, तो उपयोगकर्ता को प्रतिस्थापित करने के लिए कहा जाएगा या नहीं। –

9
आम तौर पर

:

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  

यदि गंतव्य फ़ोल्डर पहले से मौजूद है तो आप त्रुटि जांच भी जोड़ना चाहेंगे।

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 
1

यह एक घुड़सवार नेटवर्क मात्रा को कॉपी करने के लिए काम करता है:

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

यदि यह एक सिंक आप आप अपने AppleScript में निम्नलिखित खोल स्क्रिप्ट चला सकते हैं के लिए देख रहे है:

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

0
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

मैंने चेल्यांस शैल स्क्रिप्ट समाधान का उपयोग किया। अपनी स्क्रिप्ट फ़ाइल को निष्पादन योग्य बनाने के लिए मत भूलना: sudo chmod u+x scriptFilename

वैरिएबल असाइनमेंट में = साइन इन के बीच की जगह को भी हटाएं। , रिक्त स्थान के साथ काम नहीं करेंगे, उदाहरण के लिए: newFolderName="Test Folder 2"

0

यह रूप में नीचे है करने के लिए आसान तरीका कहते हैं

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 
संबंधित मुद्दे