আমি কীভাবে এই স্ক্রিপ্টটি ফোল্ডার ক্রিয়া হিসাবে ইনস্টল করতে পারি?


3

আমি একটি ফোল্ডার ক্রিয়াকলাপ হিসাবে এমন একটি স্ক্রিপ্ট সেটআপ করার চেষ্টা করছি যা একটি লক্ষ্য ফোল্ডারে যুক্ত হওয়া কোনও ফাইলের নামে অযাচিত অক্ষরগুলি সনাক্ত এবং পরিবর্তন করতে পারে।

উদ্দেশ্যটি হ'ল এই অটোমেশনটি একটি ফোল্ডার ক্রিয়া হিসাবে চালিত করা উচিত যা আগত ফাইল বা নতুন ফোল্ডারের নাম পড়তে হবে, স্পেস এবং ড্যাশগুলি পরীক্ষা করতে হবে এবং সেগুলি আন্ডারস্কোর দিয়ে প্রতিস্থাপন করবে।

আমার এখন পর্যন্ত যা আছে তা এখানে:

on adding folder items to theFolder after receiving theNewItems
    repeat with i from 1 to count of theNewItems
        set thisItem to item i of theNewItems
        tell application "Finder"
            set FileName to name of thisItem
        end tell
    end repeat
    set AppleScript's text item delimiters to {space, "-"}
    set FileName to the FileName's text items
    set AppleScript's text item delimiters to "_"
    set FileName to the FileName as text
end adding folder items to

আমি কীভাবে এই স্ক্রিপ্টটি ফোল্ডার ক্রিয়া হিসাবে ইনস্টল করতে পারি?


সিজেকে যেমন আপনার অন্যটিতে বলা হয়েছে, এখন বন্ধ, প্রশ্ন, "আপনার মুখোমুখি হওয়া ফোল্ডারের মধ্যে একটি বড় বাধা হ'ল ফাইল বা ফোল্ডারের নাম পরিবর্তন করা This এটি আপনার স্ক্রিপ্টটিকে দ্বিতীয়বার ট্রিগার করবে, কারণ নাম পরিবর্তন পরিবর্তন হিসাবে মূলত একটি নতুন ফাইল / ফোল্ডার তৈরি করা। " দেখে নেওয়া ফোল্ডারে আইটেমের স্থানটি সাধারণত অভিনয় করা এবং দেখা ফোল্ডার থেকে আলাদা ফোল্ডারে স্থানান্তরিত হওয়ার কথা। ফোল্ডারে কী চলছে তার উপর নির্ভর করে আইটেমগুলি সরানো হয়েছে তা দেখা ফোল্ডারটির ভিতরে বা বাইরে থাকতে পারে। পুনরায় নামকরণ প্রক্রিয়ায় কোনও আইটেমের নাম ইতিমধ্যে উপস্থিত থাকলে আপনি কীভাবে পরিচালনা করবেন?
ব্যবহারকারী 3439894

@ user3439894 এটি অকার্যকর হওয়া ছাড়াও এটি দ্বিতীয়বার চলতে সমস্যা কী?
জবিস

উত্তর:


1

উপরের প্রশ্নের সমাধান হিসাবে এই উত্তরটি স্বয়ংসম্পূর্ণ। তবে এটি পূর্ববর্তী প্রশ্নটির ধারাবাহিকতা হিসাবে কাজ করে যা বন্ধ ছিল , সুতরাং কিছু বিস্তৃত অনুরোধগুলি অন্তর্ভুক্ত করেছিল যেমন ফাইলের নাম সম্পাদনা করার বিকল্পের সাথে একটি কনফার্মেশন ডায়ালগ এবং বৈধতাটিকে অগ্রাহ্য করার বিকল্পটি ব্যবহার করে ব্যবহারকারীর পছন্দের ফাইল নাম।

on adding folder items to the |folder| after receiving filelist
    local folder, filelist

    tell application "Finder" to repeat with f in the filelist
        try
            set item f's name to my validate(item f's name)
        on error E
            display notification E with title my name
        end try
    end repeat
end adding folder items to
--------------------------------------------------------------------------------
to validate(filename)
    local filename

    script validation
        property old : filename

        on newFilename for old
            local old, new

            set tids to 
                {"_", space, "-"}, ¬
                {"_&_", "&"}, ¬
                {"and", "&"}, ""}
            set new to old

            repeat with tid in tids
                set new to text items of new as text
                set my text item delimiters to contents of tid
            end repeat

            new
        end newFilename

        on nameShowingErrors()
            set tids to 
                {" ͎", space}, ¬
                {"-͎", "-", "—"}, ¬
                {"&͎", "&"}, ""}
            set info to old as text

            repeat with tid in tids
                set info to text items of info as text
                set my text item delimiters to contents of tid
            end repeat

            info
        end nameShowingErrors

        to confirmRename()
            local new

            set [q, lf] to [quote, linefeed]

            tell (display dialog ["The following characters were", ¬
                " found in the filename: ⟨space⟩, \"-\" ", ¬
                " ⟨hyphen⟩ \"&\" ⟨ampersand⟩", lf, lf, ¬
                " Filename: ", q, nameShowingErrors(), q, ¬
                lf, lf, "By default, these characters will", ¬
                " be replaced with underscores.", ¬
                " Alternatively, you can make your own edits", ¬
                " below and revalidate the filename again."] ¬
                as text ¬
                with title ("Validate Filename") ¬
                default answer (newFilename for old) ¬
                buttons ["Rename", "Keep This Name"] ¬
                default button 1 ¬
                with icon (path to resource ("Finder.icns") ¬
                in bundle application "Finder")) to if ¬
                "Rename" = its button returned ¬
                then return its text returned

            false
        end confirmRename
    end script

    tell validation
        if filename = (newFilename for filename) then return filename
        set newName to confirmRename()
        if newName = false then return its old
        if newName  (newFilename for newName) ¬
            then return validate(newName)
        newName
    end tell
end validate

এই স্ক্রিপ্টটি চলাকালীন, আমি আপনাকে আপনার মূল প্রশ্নের বিপরীতে যে মন্তব্যটি দিয়েছিলাম তার কথা মনে করিয়ে দেওয়া উচিত, যা উপরে অন্য একজন ব্যবহারকারী দ্বারা পুনরুক্ত করা হয়েছে: এই স্ক্রিপ্টটিতে একটি ফাইলে দু'বার ডাকার সম্ভাবনা রয়েছে কারণ ফোল্ডারের ভিতরে থাকা ফাইলগুলির নাম বদলে দেওয়া হয় দেখা হচ্ছে আবার ফোল্ডার ক্রিয়া ট্রিগার। এটি তখন ঘটে যখন ব্যবহারকারী প্রস্তাবিত ফাইল নাম সম্পাদনা করতে এবং একটি অবৈধ নাম সরবরাহ করে। স্ক্রিপ্টটি নতুন ফাইল নামটি দ্বিতীয়বার ডায়ালগটি দেখিয়ে বৈধ হওয়ার জন্য জিজ্ঞাসা করবে (এখন অবধি, এটি সমস্ত সাধারণ এবং পুরোপুরি কী হওয়া উচিত)। তবে, যখন ব্যবহারকারী নামকরণের মানদণ্ডকে উপেক্ষা করে এবং এই নামটি যেভাবেই ব্যবহার করতে বাছাই করে, ফাইলটির পুনরায় নামকরণ করা হয় এবং স্ক্রিপ্টটি আবার ট্রিগার করা হয়। এটি তৃতীয়টির জন্য ডায়ালগটি নিয়ে আসে সময়, যা আমরা আদর্শভাবে ঘটতে চাই তা নয়, তবে অনিবার্য।

(ফাইলগুলি যখন কোনও বৈধ ফাইলের নামকরণ করা হয় তখন এটি কোনও সমস্যা নয়, যদিও স্ক্রিপ্ট হিসাবে - দু'বার নির্বিশেষে মৃত্যুদন্ড কার্যকর করা হলেও ফাইলনামগুলির জন্য কিছু করা হয় না যা পরিবর্তনের প্রয়োজন হয় না))

উপরের কারণগুলির জন্য, আমি আপনাকে পরামর্শ দিচ্ছি যে আপনার ফোল্ডারটির ক্রিয়াটি কিছুটা ভিন্নভাবে প্রয়োগ করা উচিত এবং ফাইলগুলির নাম পরিবর্তন করার আগে ফাইলগুলি একটি নতুন আউটপুট ফোল্ডারে স্থানান্তরিত করে। এর আগে set item f's name to...এমন কিছু দেখানোর আগে একটি লাইন যুক্ত করে এটি করা খুব সহজ :

move item f to the outputFolder

যেখানে আপনি স্ক্রিপ্টের শুরুতে outputFolderএকটি propertyবা একটি ভেরিয়েবল হিসাবে সংজ্ঞায়িত করবেন যেখানে আউটপুট ফোল্ডারটি উপস্থিত রয়েছে তার অবস্থানের দিকে নির্দেশ করে (পছন্দ হিসাবে একটি alias), যেমন:

set outputFolder to POSIX file "/Users/%you%/My Watched Folder/Processed Files" as alias

তবে, আপাতত, আপনি যা চান তা করতে আমি স্ক্রিপ্ট লিখেছি। আমি ধরে নিচ্ছি যে এমন অনেকগুলি উদাহরণ থাকবে না যেখানে আপনি নিজের নামকরণের মানদণ্ডকে উপেক্ষা করতে চান, তাই "থ্রি-ডায়ালগ" ঘটনাটি কখনই উদ্ভূত না হতে পারে, বা যখন তা ঘটে তখন উদ্বেগের চেয়ে কিছুটা বেশি হতে পারে।


ফোল্ডার ক্রিয়া হিসাবে কোনও স্ক্রিপ্ট ইনস্টল করতে , আমি আপনাকে আমার পূর্ববর্তী উত্তরের প্রথম অংশে পরিচালিত করব, যা আমি নীচে স্থানান্তর করেছি।

ফোল্ডার ক্রিয়া

ফোল্ডার ক্রিয়া দুটি উপায়ে যেকোন একটিতে তৈরি করা যেতে পারে: অটোমেটরের মাধ্যমে বা কোনও ফোল্ডার অ্যাকশন স্ক্রিপ্টের মাধ্যমে

ম্যাকোসে অটোমেটর

ফোল্ডার অ্যাকশন স্ক্রিপ্ট কীভাবে তৈরি করা যায় সে সম্পর্কিত তথ্যের জন্য , যা আমি বলব সম্ভবত এই ক্ষেত্রে সবচেয়ে উপযুক্ত সমাধান হতে পারে, আপনি ম্যাক অটোমেশন স্ক্রিপ্টিং গাইড - ফোল্ডারগুলি পর্যবেক্ষণ করতে পারেন, এটি কীভাবে করবেন তা বিশদ করে।

কোনও ফোল্ডারের সাথে কোনও ফোল্ডার অ্যাকশন স্ক্রিপ্ট সংযুক্ত করে শিরোনামে বিভাগটি সর্বাধিক প্রাসঙ্গিক।


@ ব্রানরাম, আপনি এইটা কীভাবে চালিয়ে গেছেন?
সিজেকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.