Çöp Kutusu'ndaki her şeyi otomatik olarak geri koymanın bir yolu var mı?


16

Eşim Finder'da 'tüm belgeler' klasörünü gördü ve hepsini çöp kutusuna taşımaya karar verdi.

Artık çöp kutusunda 9000'den fazla dosya var ve tek bir tıklamayla her şeyi geri almanın bir yolunu bulamadım.

Bazı nedenlerden dolayı, bir kerede yalnızca bir dosyayı geri koymama izin verecek.

Bunu otomatikleştirmenin bir yolu var mı?


1
Klasörü çöpe sürüklemişse, geri sürüklemeniz yeterli mi?
henryaaron

Yanıtlar:


9

Birden fazla öğeli bir seçim için "Geri Al" devre dışı bırakılmışsa, bu, seçilen öğelerin (en azından) Çöp dizininin .DS_Store dosyasında saklanan orijinal konum bilgilerine sahip olmadığı anlamına gelir.

İdeal az olsa da, siz "Geri koy" olabileceği grup arayan dosyaların çoklu seçme alt kümelerini denemek topluca kalan dosyalar için manuel dosyalama başvurmadan önce.


1
Toplu halde "Geri koy" gibi görünmüyorum. Dosyalardan birini seçebilirim ve geri koyma seçeneği var ama ikisini de "Geri koy" seçeneğini seçtiğimde kullanılamaz. Bu yüzden topluca "geri koymak" düşünmüyorum. Belki bir el yazısıyla olsa da ...
Steve Moser

6
Bu cevap yanlış. Herhangi bir dosyanın "Geri Dön" olabileceği bir durumdayım, ancak birden fazla dosya seçersem cevabınıza uygun olmayan yapamam.
Tom Swirly,

Cevap gerçekten yanlıştır. Fle A'yı aldım ve B'yi çöp kutusuna attım. Bunları ayrı ayrı seçmek, sağ tıklarken, her ikisini de seçip sağ tıklayıp Geri Al seçeneği bırakıldığında bana geri bırakma seçeneği sunar.
İngiliz anahtarı

5

AppleScript Editor'da böyle bir komut dosyası çalıştırmayı deneyin:

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

Bir öğeyi geri koymaya çalıştığınızda Finder bir şifre iletişim kutusu gösteriyorsa, tell application "System Events"bloğun sonuna böyle bir şey eklemeyi deneyin :

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

Nedense @ThierryKoblentz tarafından yaklaşık 50 kat daha hızlı iken bu benim için gerçekten yavaş koştu. Nedenini keşfetmedim.
Rory,

3

"Çöp Kutusundaki tüm öğeleri geri" koyan bir AppleScript benim için çalıştı:

"AppleScript Editor" ı açın ve aşağıdaki satırları kopyalayın / yapıştırın, ardından betiği gerektiği kadar çalıştırın.

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
Bu benim için macOS Sierra'da çalıştı. Bilginize: Anahtar kod 126, anahtar kod 51, geri aldır. 3 çizgileri anahtar aşağı değiştirebilir ... anahtar kadar ... birine: key code 51 using key command down. (Bu, başka bir yanıttan uyarlanmıştır. Masaüstüme geri yüklenen dosyalar bu komut dosyasıyla karışık olan sistem şifremi istedi. Bunları iptal ettim ve bu birkaçını el ile geri
Eric Hu

Benim için MacOS Mojave'da bu çözüm bir kabustu. Çöp kutusundan geri kalan her öğe, o maddenin kaynak klasörüne yeni bir Finder penceresi açtı. Daha sonra kod mevcut Finder penceresinde (bazıları ekli klasör eylemleri olan klasörlerdi) öğeleri seçmeye başladı ve ardından tetiklendi.
wch1zpink

3

Bu AppleScript kodu benim için macOS Mojave'ın en son sürümünü kullanarak çalışıyor.

Bu kod, her öğeyi orijinal konumlarına geri getirerek, çöp kutusundaki her öğe boyunca dolaşır.

Çöp Kutusundaki dosyaların orijinal kaynak klasörlerinden biri artık mevcut değilse, repeat until trashCount is 0komut döngüden çıkar. Çöp Kutusunda kalan dosyalar yalnızca bu nedenle geri alınamayacak dosyalar olacaktır.

GÜNCELLEME

Dosyaları çöp kutusundan geri alma işleminin yinelenen döngüleri sırasında masaüstünüzdeki bir öğeyi seçmek mümkün olduğundan, seçilen masaüstü öğesi işlem sırasında yakalanabilir ve çöp kutusuna taşınabilir. Bu senaryodan kaçınmak için, kilidi açılmış olan Masaüstü öğelerini kilitleyecek ve ayrıca komut dosyasının sonunda kilidini açacak kod ekledim.

Tüm Masaüstü öğeleri artık kilitli olduğundan ... Çöpten dosyaları geri getirme işlemi sırasında, bir nedenden dolayı yanlışlıkla masaüstünüzde bir dosya veya klasör seçtiyseniz ve kod seçili masaüstü öğesini işlemeye çalışırsa ... o öğenin kilitli olduğunu belirten bir iletişim penceresi oluşturun ve onu çöp kutusuna göndermeye devam etmek isteyip istemediğinizi sorun. Sistem Olayları, betiğin sonuna doğru blok oluşturulmuş olan bu iletişim kutularının herhangi birini idare edeceğini söylüyor.

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

OP ~ 7.5 yaşında, bu nedenle artık OP'nin sorunu için geçerli olmasa da, geriye dönük dosyayı gösteren yeni bir pencere açan macOS sürümlerini ele alan güncellenmiş bir otomatik komut dosyası kullanmak güzel. Muhtemelen, bir kullanım notu olarak, kullanıcıyı kullanması için, UI Komut Dosyası özelliğinin doğası gereği, bitinceye kadar bilgisayara dokunmaması gerektiğini bildirmeniz gerekir. Mutlaka, betiğin çalışması tarafından sunulan bir mesaj olmak zorunda değil, cevabında bir not olmak zorunda değildir.
user3439894

Btw Ben +1 olurdu, ama tekrar döngüdeki hata kabul edilemez çünkü bu ona neden olan durumu işlemek için kodlanmış olabilir!
user3439894

@ user3439894 Kodu değiştirdim ... +1 nerede? LOL
wch1zpink

1
Ne kadar kolay olduğunu görün! :) +1
user3439894

1

Her dosyayı vurgulayabilmeniz veya en azından artımlı gruplar halinde yapabilmeniz, kopyalamanız ve yeniden yapıştırmanız gerektiğine inanıyorum. Sadece denedim ve çöp kutunuza çift tıklarsanız, geri yüklemek istediğiniz dosyaları sağ tıklatabilirsiniz, sadece dosyaya göre çalışan bir "geri koyma" seçeneği vardır, vurgulamak istediğim gibi, kopyalamak için Cc'ye (komut c) basın. sonra onları geri yapıştırmak için Cv (komut v).


1

Bu benim için çalıştı:

  • Finder'da yeni bir klasör oluşturun, benim "kurtarılan dosyalar" adını verdim
  • Çöp Kutusu klasörünü açın ve bir dosya grubu seçin
  • Dosyaları kopyalayın ve "kurtarılan dosyalar" klasörüne yapıştırın.

Büyük bir klasör veya çok sayıda ayrı dosyayı geri koymanız gerekirse, bu tekniği kullanın. Yalnızca 1 veya 2 dosyaya ihtiyacınız varsa, sadece "geri koy" özelliğini kullanın.


1
Yanlış - bu tekrar aslında dosyaları "geri koymaz" ve sorunu çözmez, sadece hepsini alır ve onları büyük bir yığına atar.
Tom Swirly,

1

Snow Leopard'dan önce, OS X yerel olarak dosyaları silindikleri orijinal konumlarına geri yükleme olanağına sahip değildir (yerel olarak, Geri Dönüşüm Kutusu için bağlam menüsünde "Geri Yükle" seçeneğiyle bir Windows ortamında yapılabilir). Yanlışlıkla eşinizin bir noktada yaptığı gibi aynı şeyi yaptım, yaklaşık 10.000 artı dosya silindi.

Tüm seçeneklerimi inceledikten sonra Time Machine ile sistem geri yükleme işlemi yaptım. Söz konusu dosyaları uygun konumlarına getirmek en uygun yöntemdi.


2
Buradaki diğer cevaplardan kolayca anlayabileceğiniz gibi, dosyaları / klasörleri Çöp Kutusu'ndan geri koymak mümkündür: Çöp Kutusu'nu açın, bir dosyayı sağ tıklayın ve "Geri Yükle" yi seçin.
nohillside

1

Tüm dosyaları Çöp Kutusu'ndan Bulucudaki Tüm Dosyalarım sekmesine sürükleyin. Çok fazla dosyanız varsa, biraz zaman alacaktır. 10000+ dosya üzerinde test ettik. Bulucu tüm dosyaları orijinal konumuna geri yükleyecektir.


2
Bu macOS üzerinde hiçbir şey yapmaz Sierra
Cyril Duchon-Doris

0

@Thierry'nin Giacomo Balli'den daha önce vermiş olduğu yakın bir çözüme dayanarak , problem hala devam ettiğinden , bu çözümü hepinize yardımcı olmak için yarattık . MacOS'ta bir dosyayı sildiğinizde , orijinal konumları ekranda saklanır ..DsStoregeri yüklemek istemeniz durumunda gizli dosyaları. MacOS'un son sürümleri, çöp kutusuna, geldiği yere geri koyma kabiliyetine sahip, yalak bölünmüş ve sürükleyip bırakarak gitmekten çok daha hızlı. Bildiğiniz gibi, Dock'nuzdaki çöp simgesine tıklarsanız, elinizde bulunan eşyaları iyi bir şekilde çöpe atarsınız. Herhangi bir dosyaya sağ tıklayın veya Control tuşunu basılı tutup tıklayın (veya birden fazla öğe seçmek ve seçmek için Command tuşunu basılı tutun, ardından Control tuşunu basılı tutup tıklatın) ve Putback seçeneğini göreceksiniz. Tek sorun o zaman sadece bir ürün için yapmamıza izin vermesi.

Çözüm

  1. Depoyu yerel makinenize klonlayarak başlayın, böylece çözümümüzü kullanmaya başlayabilirsiniz;

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

    cd çöp geri

  2. Run AppleScript osascript komutu ile, o bilgisayardaki;

    osascript komut dosyaları / trash-back.scpt

Sonuçlar

AppleScript çalıştırmak , uzaktan komut satırından yapabileceklerinizi büyük ölçüde artırır ve aksi halde yapılması zor olan birçok harika hileye olanak tanır. Komut satırlarının tamamını komut satırında çalıştırabilseniz de, bu çalıştırma yöntemi yalnızca çalıştırma hakkındadır, uzak bir bilgisayara da (ssh kullanarak) giriş yapabilir ve bu bilgisayarda AppleScript'iosascript komut aracılığıyla çalıştırabilirsiniz . osascriptKomut ayrıca başka çalıştırabilirsiniz Açık Komut Mimarisi -l değiştirici kullanılarak dili.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.