क्या कूड़ेदान में सब कुछ ऑटो "वापस" करने का एक तरीका है?


16

मेरी पत्नी ने फाइंडर में 'सभी डॉक्यूमेंट्स' फोल्डर को देखा और इसे सभी कूड़ेदान में ले जाने का फैसला किया।

अब हमारे पास कचरे में 9,000 से अधिक फाइलें हैं और मैं एक क्लिक के साथ सब कुछ वापस लाने का एक तरीका नहीं ढूंढ सका हूं।

किसी कारण से यह केवल मुझे एक बार में एक फ़ाइल 'वापस' करने देगा।

क्या इसे स्वचालित करने का कोई तरीका है?


1
यदि उसने फ़ोल्डर को ट्रैश में खींच लिया है, तो उसे वापस खींचें?
मेंहदीरोन

जवाबों:


9

यदि "पुट बैक" एक बहु-आइटम चयन के लिए अक्षम है, तो इसका मतलब है कि (कम से कम) चयनित वस्तुओं में से एक में ट्रैश निर्देशिका की .DS_Store फ़ाइल में संग्रहीत अपनी मूल स्थान जानकारी नहीं है।

हालाँकि यह आदर्श से कम है, फिर भी उन फ़ाइलों की बहु-चयन करने की कोशिश करें, जिन्हें आप बची हुई फाइलों के लिए मैन्युअल फाइलिंग का सहारा लेने से पहले "पुट बैक" एन ग्रुप में देख सकते हैं ।


1
मैं "पुट बैक" फाइलों को नहीं देख सकता। मैं या तो फ़ाइल का चयन कर सकता हूं और वापस डालने का विकल्प है लेकिन जब मैं दोनों का चयन करता हूं तो "पुट बैक" उपलब्ध नहीं होता है। इस प्रकार मुझे नहीं लगता कि आप "पुट बैक" एन मस्से कर सकते हैं। शायद एक applescript के साथ हालांकि ...
स्टीव मोजर

6
यह उत्तर गलत है। मैं ऐसी स्थिति में हूं, जहां कोई भी व्यक्तिगत फाइल "पुट बैक" हो सकती है, लेकिन यदि मैं एक से अधिक फाइल का चयन कर सकता हूं, जो आपके उत्तर के लिए असंगत नहीं है।
टॉम स्विरली

उत्तर वास्तव में गलत है। मैंने अपने कूड़ेदान में A और फ़ाइल B को उड़ाया है। सेलेक्ट करने पर उन्हें व्यक्तिगत रूप से पुट बैक ऑप्शन देता है, जब राईट क्लीकिंग, उन दोनों को सलेक्ट करना और फिर राईट क्लिक करना, पुट बैक ऑप्शन चला जाता है।
रिंच

5

AppleScript Editor में इस तरह से स्क्रिप्ट चलाने का प्रयास करें:

repeat
    tell application "Finder"
        close windows
        if items of trash is {} then return
        open trash
        activate
    end tell
    tell application "System Events"
        key code 125 -- down arrow
        key code 51 using command down -- command-delete
    end tell
end repeat

यदि खोजकर्ता एक पासवर्ड डायलॉग दिखाता है, जब आप कुछ आइटम वापस करने की कोशिश करते हैं, तो tell application "System Events"ब्लॉक के अंत में कुछ इस तरह से जोड़ने का प्रयास करें :

delay 1
if exists window 1 of process "SecurityAgent" then
    tell window 1 of process "SecurityAgent"
        set value of text field 2 of scroll area 1 of group 1 to "pa55word"
        click button 2 of group 2
    end tell
end if
delay 1

किसी कारण से यह वास्तव में मेरे लिए धीरे-धीरे चला, जबकि @ThierryKoblentz द्वारा लगभग 50x तेज था। मैं तलाश क्यों नहीं किया।
रोरी

3

एक AppleScript जिसने "कचरा में सभी आइटम वापस रख दिए हैं" मेरे लिए काम करते हैं:

"AppleScript Editor" खोलें और नीचे की पंक्तियों को कॉपी / पेस्ट करें, फिर आवश्यकतानुसार स्क्रिप्ट को कई बार चलाएं।

tell application "System Events"
    tell process "Finder"
        repeat 100 times
            tell application "Finder" to open trash
            tell application "Finder" to activate
            key code 126
            key down command
            key code 51
            key up command
            delay 0.2 -- adjust delay as needed
        end repeat
    end tell
end tell
tell application "Finder" to close every window

1
यह मेरे लिए macOS सिएरा पर काम किया। FYI करें: कुंजी कोड 126 है और कुंजी कोड 51 बैकस्पेस है। आप 3 लाइनों की कुंजी नीचे ... कुंजी को ... को एक में संशोधित कर सकते हैं key code 51 using key command down:। (इसे एक अन्य उत्तर से रूपांतरित किया गया है। मेरे डेस्कटॉप पर पुनर्स्थापित की गई फ़ाइलें मेरा सिस्टम पासवर्ड चाहती थीं, जो इस स्क्रिप्ट के साथ गड़बड़ हो गई। मैंने उन्हें रद्द कर दिया और मैन्युअल रूप से उन कुछ को बहाल कर दिया।
एरिक हू

मेरे लिए MacOS Mojave पर, यह समाधान एक बुरा सपना था। प्रत्येक आइटम जिसे कचरे से वापस रखा गया था, उस आइटम के स्रोत फ़ोल्डर में एक नई खोजक विंडो खोली। फिर कोड ने वर्तमान फ़ाइंडर विंडो में आइटम का चयन करना शुरू कर दिया (जिनमें से कुछ फ़ोल्डर फ़ोल्डर की कार्रवाइयों के साथ थे) जो फिर चालू हो गए।
wch1zpink

3

यह AppleScript कोड macOS Mojave के नवीनतम संस्करण का उपयोग करके मेरे लिए काम करता है।

यह कोड कचरा में प्रत्येक आइटम के माध्यम से लूप करेगा, प्रत्येक आइटम को उनके मूल स्थान पर वापस लाएगा।

यदि ट्रैश में मौजूद फ़ाइलों में से कोई भी मूल स्रोत फ़ोल्डर मौजूद नहीं है, तो repeat until trashCount is 0कमांड लूप से बाहर निकल जाएगी। कचरा पेटी में बची हुई सभी फाइलें केवल ऐसी फाइलें होंगी जिन्हें इस कारण से वापस नहीं लाया जा सकता था।

अपडेट करें

चूंकि कचरा से फ़ाइलों को डालने की प्रक्रिया के दोहराव के दौरान अपने डेस्कटॉप पर किसी आइटम का चयन करना संभव है, इसलिए चयनित डेस्कटॉप आइटम इस प्रक्रिया में फंस सकते हैं और कचरे में चले जा सकते हैं। इस परिदृश्य से बचने के लिए, मैंने कोड जोड़ा जो वर्तमान में अनलॉक किए गए डेस्कटॉप आइटम को लॉक कर देगा और स्क्रिप्ट के अंत में उन्हें अनलॉक भी करेगा।

क्योंकि सभी डेस्कटॉप आइटम अब बंद हो गए हैं ... कूड़ेदान से फाइलें वापस लाने की प्रक्रिया के दौरान, यदि किसी कारण से आप गलती से अपने डेस्कटॉप पर एक फ़ाइल या फ़ोल्डर का चयन करते हैं और कोड उस डेस्कटॉप आइटम को चुनने की प्रक्रिया का प्रयास करता है ... यह होगा उस आइटम का उल्लेख करते हुए एक डायलॉग विंडो जेनरेट करें और पूछें कि क्या आप इसे ट्रैश में भेजना जारी रखना चाहते हैं। सिस्टम ईवेंट बताता है कि स्क्रिप्ट के अंत में ब्लॉक उन डायलॉग बॉक्स में से किसी को भी हैंडल करेगा जो उत्पन्न हो सकता है।

property desktopFolder : path to desktop
property unlockedFiles : missing value

tell application "Finder"
    set trashCount to count of every item of trash
    set unlockedFiles to (items of desktopFolder whose locked is false)
    repeat with i in unlockedFiles
        set locked of i to true
    end repeat
end tell

repeat until trashCount is 0
    tell application "Finder" to set orphanCount to count of every item of trash
    putFilesBack()
    tell application "Finder" to set trashCount to count of every item of trash
    if orphanCount is equal to trashCount then exit repeat
end repeat

delay 1

tell application "System Events"
    repeat until not (exists of button "Stop" of scroll area 1 of window 2 of application process "Finder")
        if exists of button "Stop" of scroll area 1 of window 2 of application process "Finder" then
            click button "Stop" of scroll area 1 of window 2 of application process "Finder"
        end if
    end repeat
end tell

tell application "Finder"
    close every Finder window
    delay 1
    repeat with i in unlockedFiles
        set locked of i to false
    end repeat
end tell

on putFilesBack()
    global trashFiles, trashCount, thisItem
    tell application "Finder"
        set trashFiles to every item of trash
        set frontmost to true
        repeat while not frontmost
            delay 0.1
        end repeat
        my closeFinderWindows()
    end tell
    delay 0.1
    tell application "System Events"
        tell application process "Finder"
            repeat with i from 1 to count of trashFiles
                set thisItem to item i of trashFiles
                delay 0.1
                set frontmost to true
                select thisItem
                delay 0.1
                try
                    key code 51 using {command down}
                end try
                delay 0.1
                my closeFinderWindows()
                delay 0.1
            end repeat
        end tell
    end tell
    tell application "Finder" to set trashCount to count of every item of trash
end putFilesBack

on closeFinderWindows()
    tell application "Finder"
        set finderWindowRef to (a reference to (every Finder window whose name is not "Trash"))
        set finderWindowRef to contents of finderWindowRef
        close (items of finderWindowRef)
    end tell
end closeFinderWindows

ओपी ~ 7.5 वर्ष पुराना है, इसलिए ओपी के मुद्दे पर अब तक लागू नहीं है, फिर भी एक अद्यतन स्वचालित स्क्रिप्ट होना अच्छा है जो मैकओएस के रिलीज को संभालती है जो पुट बैक फाइल दिखाते हुए एक नई विंडो खोलती है। आपको संभवतः एक उपयोग नोट के रूप में, उपयोगकर्ता को सूचित करना चाहिए कि इसका उपयोग करने के लिए, यूआई स्क्रिप्टिंग की प्रकृति के कारण किसी को कंप्यूटर को तब तक स्पर्श नहीं करना चाहिए जब तक कि यह समाप्त न हो जाए। जरूरी नहीं कि यह स्क्रिप्ट के द्वारा प्रस्तुत संदेश हो लेकिन उत्तर में एक नोट के रूप में हो।
user3439894

BTW I में +1 होगा, लेकिन रिपीट लूप में बग अस्वीकार्य है क्योंकि इसे उस स्थिति को संभालने के लिए कोडित किया जा सकता है जो इसका कारण बनता है!
user3439894

@ user3439894 मुझे कोड अपडेट किया गया ... मेरा +1 कहां है? LOL
wch1zpink

1
देखिए वह कितना आसान था! :) +1
user3439894

1

आपको हर फ़ाइल को हाइलाइट करने में सक्षम होना चाहिए या कम से कम इसे वृद्धिशील बैचों में करना चाहिए, उन्हें कॉपी करें और फिर उन्हें पेस्ट करें जो मुझे विश्वास है। मैंने अभी इसकी कोशिश की है और यदि आप अपने ट्रैश पर डबल क्लिक करते हैं, तो उन फ़ाइलों पर राइट क्लिक कर सकते हैं जिन्हें आप पुनर्स्थापित करना चाहते हैं, "पुट बैक" विकल्प है, जो केवल फ़ाइल द्वारा फ़ाइल का काम करता है, जैसा कि मैंने कहा था कि हाइलाइट करने के लिए प्रतिलिपि बनाने के लिए Cc (कमांड c) दबाएं। फिर उन्हें वापस चिपकाने के लिए Cv (कमांड v)।


1

यह मेरे लिए काम किया:

  • फाइंडर में एक नया फोल्डर बनाएँ, मैंने मेरा "रिकवर की गई फाइलें" कहा
  • ट्रैश फ़ोल्डर खोलें और फ़ाइलों के एक समूह का चयन करें
  • फ़ाइलों की प्रतिलिपि बनाएँ और "पुनर्प्राप्त फ़ाइलें" फ़ोल्डर में पेस्ट करें।

यदि आपको एक बड़ा फ़ोल्डर, या बड़ी संख्या में अलग-अलग फ़ाइलों को वापस रखने की आवश्यकता है, तो इस तकनीक का उपयोग करें। यदि आपको केवल 1 या 2 फ़ाइलों की आवश्यकता है, तो बस "पुट बैक" सुविधा का उपयोग करें।


1
गलत - यह फिर से वास्तव में फ़ाइलों को "वापस" नहीं करता है और समस्या को हल नहीं करता है, यह केवल उन सभी को लेता है और उन्हें एक बड़े ढेर में फेंक देता है।
टॉम स्विरली

1

स्नो लेपर्ड से पहले, OS X में मूल रूप से फ़ाइलों को उनके मूल स्थानों पर पुनर्स्थापित करने की क्षमता नहीं होती है, जिन्हें वे से हटा दिया गया था (जैसा कि रीसायकल बिन के लिए संदर्भ मेनू में "पुनर्स्थापना" विकल्प के साथ विंडोज वातावरण में मूल रूप से किया जा सकता है)। मैंने गलती से वही किया जो आपकी पत्नी ने एक बिंदु पर किया था और लगभग 10,000 से अधिक फाइलें डिलीट की गई थीं।

अपने सभी विकल्पों की खोज करने के बाद मैंने टाइम मशीन के माध्यम से एक सिस्टम रिस्टोर किया। यह अब तक की सबसे समीचीन पद्धति थी, जो उक्त फाइलों को उनके उचित स्थानों पर पहुँचाने के लिए थी।


2
ठीक है, जैसा कि आप आसानी से यहां अन्य उत्तरों से कटौती कर सकते हैं, ट्रैश से फ़ाइलों / फ़ोल्डरों को वापस रखना संभव है: ट्रैश खोलें, एक फ़ाइल पर राइट-क्लिक करें और "पुट बैक" चुनें।
nohillside

1

खोजक में सभी फ़ाइलें मेरी फ़ाइल टैब पर ट्रैश से खींचें। यदि आपके पास बहुत सारी फाइलें हैं, तो इसमें थोड़ा समय लगेगा। हमने 10000+ फाइलों पर परीक्षण किया। खोजक अपने मूल स्थान पर सभी फ़ाइलों को पुनर्स्थापित करेगा।


2
यह
macOS

0

एक निकट समाधान के आधार पर, जो @thierry ने पहले से ही जियाकोमो बल्ली से यहां दिया था , हमने यह समाधान आपकी कई मदद करने के लिए बनाया है , क्योंकि समस्या अभी भी बनी हुई है। जब आप किसी फ़ाइल को MacOS में हटाते हैं , तो उसके मूल स्थानों को इसमें संग्रहीत किया जाता है.DsStoreयदि आप इसे पुनर्स्थापित करना चाहते हैं तो छिपी हुई फ़ाइलें। MacOS के हाल के संस्करणों में आपके ट्रैश में सामान रखने की क्षमता है, जहां से यह आया, लिक्विड-स्प्लिट, और यह ड्रैग और ड्रॉपिंग की तुलना में तेज़ है। तो जैसा कि आप जानते हैं, यदि आप अपने डॉक में ट्रैश आइकन पर क्लिक करते हैं, तो आपको आपके पास अच्छी तरह से ट्रैश किए गए आइटम दिखाई देंगे। किसी भी फ़ाइल पर राइट-क्लिक या कंट्रोल-क्लिक करें (या कई आइटम्स को क्लिक करने और चुनने के लिए कमांड को दबाए रखें, फिर कंट्रोल-क्लिक करें), और आपको पुट बैक विकल्प दिखाई देगा। एकमात्र समस्या यह है कि यह हमें उस समय केवल एक आइटम के लिए करते हैं।

समाधान

  1. अपने स्थानीय मशीन के भंडार को क्लोन करके शुरू करें ताकि आप हमारे समाधान का उपयोग करना शुरू कर सकें;

    git clone git@github.com: opprDev / trash-back.git

    सीडी कचरा-वापस

  2. AppleScript चलाएं उस कंप्यूटर पर, osascript आदेश के माध्यम से;

    ऑसस्क्रिप्ट स्क्रिप्ट / ट्रैश-बैक. सेट

निष्कर्ष

रनिंग AppleScript बहुत बढ़ाता है जिसे आप कमांड लाइन से दूरस्थ रूप से कर सकते हैं, और बहुत सारे कूल ट्रिक्स को सक्षम करता है जो अन्यथा करना मुश्किल है। जब आप कमांड लाइन में पूरी स्क्रिप्ट चला सकते हैं, तो चलने का यह तरीका केवल रिमोट कंप्यूटर (ssh का उपयोग करके) में लॉग इन कर सकता है और कमांड के माध्यम से उस कंप्यूटर पर AppleScript चला सकता है osascriptosascriptआदेश भी किसी अन्य चला सकते हैं खुला स्क्रिप्टिंग वास्तुकला -l संशोधक का उपयोग करके भाषा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.