Windows'da çok uzun bir dosya adı olan bir dosyayı nasıl silebilirim? [çift]


202

Bu sorunun zaten burada bir cevabı var:

Eşim, bir şekilde sona eren dosyalara sahip, normal yollardan veya komut satırından silinememelerine neden olan (silinemez) birkaç dosya ve klasöre sahiptir. Klasör yapılarının derinliği nedeniyle dosya adlarının çok uzun olduğuna inanıyorum. Böyle dosyaları temizlemek için iyi bir yardımcı program bilen var mı?


Bu dosyalar nasıl oluşturuldu?
Nick

Bu konuyla ilgili cehaletim için özür dilerim, ancak Windows bu dosyaları kullanmamalı mı? Eddins'in göndereceği şey Windows tarafından otomatik olarak yapılmayacak mıydı (hatta explorer'dan)?
Stefanos Kalantzis 14:13

2
@ Mokubai- Yinelenen soru, bu soru daha eski olduğundan , bunun bir kopyası olarak işaretlenmelidir .
AStopher

1
@cybermonkey: Daha iyi bir cevabı var.
Ellesedil

Diğer okuyucular için + ile 7zip YöntemiCTRLDELETE bence en kolay yöntemdir ...
Christian Gollhardt

Yanıtlar:


426

Bir dizini tamamen silmek istediğinizde ve uzun yollar içerdiğinde, robocopyÇOK iyi bir iş çıkarır:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

Bu, robocopy'nin dahili olarak Win32 işlevlerinin Unicode uyumlu sürümlerini, \\?\dosya yolları öneki ile kullanması nedeniyle ; bu işlevlerin 259 yerine 2¹⁶-1 (32,767) karakter sınırı vardır.

Tüm dosyalardan kurtulmak için bu işlemi bir kereden fazla yapmanız gerekebilir.


1
Dosya sisteminde depolanan bir kısa ad (8.3) olmadığında verimlidir.
Antoine RODRIGUEZ 11:13

1
Bu , silinmeyi reddeden inatçı Windows Mağazası önbellek dosyalarımla güzelce çalıştı . Teşekkürler!
Samir

1
Bunun işe yaraması için robokopi hattına eklemek / temizlemek zorunda kaldım, ancak bundan sonra hile yaptım
actionshrimp,

3
Robocopy beni bu karmaşaya sokan şeydi, ama Robocopy'yi ondan çıkarmak için kullanmak hiç aklıma gelmedi. Mükemmel cevap! Teşekkürler!
Jay Michaud

2
@SarahofGaia, kötü, ben 2¹⁶ - 1 aslında
Benoit

91

Komut isteminden:

dir /X

Bu, dosyalarınızı / klasörlerinizi kısa ad biçiminde listeler. Ardından dosyayı silmek için tam olarak yazıldığı gibi kısa adı kullanın:

del LONGF~1.txt

1
Bunu sevdim, biraz yanal düşünce.
Col

Bu durumda çalışacağını garanti edemesem de, sonunda geçersiz karakterler içeren klasörleri silmek için birkaç kez kullandım, bu da normal yollarla silinmelerini imkansız hale getiriyor.
Eddins

1
Bu, geçerli dizindeki dosya ve klasörler için çalışır, ancak her nasılsa kendini bulmak için yönetmek eğer içeride kimin yolu çok uzun bir klasör, bir işe yaramaz. Örneğin, şu anda çok uzun bir yoldan bir konsoldayım ve hatta dirveya olamaz cd ...
Bobson

1
@ Bobson yerine dirkullanamazsanız pushd. Bu benim için çalıştı.
BadHorsie

4
Bu, Windows 10 ile çalışmaz, görüntülenen dosya adı uzun olanıdır
Loenix

53

Ilerleyem her yol üst klasörünü "1" olarak yeniden adlandırıp silmeye çalışarak yolumda ilerliyorum. Her seferinde yolu etkili bir şekilde kısaltıyorsunuz ve sonunda tüm dizin yapısını silebilinceye kadar 4 veya 5 dizinden fazla çalışmak zorunda kalmamıştım (ki istediğiniz gibi olabilir veya olmayabilir). Bunu, son alt klasörden de yapabilir ve yukarı veya aşağı doğru çalışabilirsiniz.


7
Bu benim için çalışan tek şeydi. Burada ve bunun gibi diğer forumlarda verilen diğer tüm püf noktaları işe yaramadı.
Andrew Arnott

Garip bir şekilde çalışan tek öneriydi.
Nestor Ledon 24:14

Bu benim için çalıştı, bana yardımcı olan bir kısayol oldu mv * 1 && cd 1. Bu, dizinde birden fazla dosya varken işe yaramadı, ancak bu noktada rm -rf *genellikle bir numara yaptı.
Alexander Varwijk

1
Windows 10'da bunu yapamam ... yeniden adlandırmak "dosya
isminin

3
Bu sadece benim için sorunu çözmekle kalmadı, aynı zamanda konuyla nasıl başa çıktığımı da açıklıyor. Sınıra yakın bir yol olmalıydı, sonra alt klasördeki dosyaları sınırın üzerine iten bir üst klasörü yeniden adlandırdım ("Nov 2016 kaydetme adını" ekledim). Nedeni ve çözümü de bilmek güzel, bunun başka yollardan da olabileceğini bilsem de, bunun insanlara ortak bir yol olduğunu düşünüyorum.
eselk

13

Komut İstemi ( cmd.exe) dahil olmak üzere bazı programlarda, tam yolu şöyle ekleyerek dosya uzunluğu sınırını aşabilirsiniz \\.\:

\\. \ C: \ some dizin \ other dizin \ uzun ada sahip bir dosya

3
Windows 10'da çalışmıyor
Dawesi

teşekkürler, cmd Win7'de bununla bir çekicilik yaptırm -rf \\directoryname
Philip Pryde

13

Bir şeyi taşımak, kopyalamak veya silmek için "tam yol ve dosya adı" uzunluk sınırlamasını aşmak için kullandığım bir numara, bir klasöre işaretlenmiş eşlenmiş bir sürücü harfini kullanarak yarıya (veya daha fazla) dayayarak 'kısaltarak' kısaltmaktır. yolun aşağısında .

bu yüzden c: \ some \ long \ path ... \ ve \ foo \ bar \ klasörleri \ oldfiles \ myoldfile.txt.

Ardından, yol boyunca bir yere rasgele bir sürücü harfi eşleyin, böylece yolun ilk bölümü yalnızca birkaç karakter uzunluğunda olur. Ön koşul - klasör paylaşılan bir klasörde olmalıdır (bu zaten bir sunucudaysa, bu işlemi yapmam gereken yerdeydi) ve önceden değilse, yolda bir klasör seçin. ve paylaşın. Ortamınıza ve paranoya seviyenize bağlı olarak, NTFS izinleri makul ölçüde kısıtlayıcı olduğu sürece herkesin paylaşıma erişimi değiştirmesine izin verin. İsterseniz, yalnızca kendi hesabınızdaki değişiklik haklarına izin verin.

Şimdi paylaşılan klasöre veya içindeki bir klasöre gidin ve paylaşın veya komut satırını aşağıdaki gibi kullanın. "Foo" klasörünü "fooshare" olarak paylaştığınızı varsayalım.

net use x: \\mycomputername\fooshare\bar\folders /persistent:no

ve X: sürücüsü şimdi doğrudan bu paylaşımın içindeki "klasörler" klasörünü gösteriyor, bu nedenle "x: \ oldfiles \ myoldfile.txt" şimdi oldukça kısa.

("/ Persistent: no", bir sonraki yeniden başlatma işleminde hayatta kalamayacağınız ve daha sonra sizi şaşırtmayacağınız anlamına gelir. Bittiğinde klasörünüzü paylaşmayı unutmayın.)

Unutmayın, dosyayı içeren klasörü mutlaka paylaşmak zorunda değilsiniz, zaten paylaşılan bir klasörün içindeyseniz , paylaşım ve iç içe geçmiş klasörler aracılığıyla dosyanın yakınındaki bir hedef klasöre eşleştirebilirsiniz ve bu iyi çalışır.

Bu tekniği, kullanıcıların klasör yapısında oldukça derinlemesine eşlemiş olduklarını fark ettiğimizde iki sunucu arasında devasa bir roboroskopi yapmak zorunda kaldım, bu yüzden oradan 255 karakter kullanabildiler, ancak toplam dosya yolu uzunluğunu aştılar. Yerel sürücü kökünden erişildiğinde.


4
subst x: C:\Some\first\part\of\the\long\pathSürücüyü kullanarak ve ardından sürücüyü silip paylaşmayı önleyebilirsinizsubst x: /d
mihi

1
İyi deneme ama 10'lu klasörün içindeyken bu mümkün değil.
Julian Knight

substHüner olarak uzun dosya adı olmadığı için, iyi iş gibi görünüyor bu yüzden bile bir sürücünün kökünde üzerinde 260 karakter gitmek yapmaya sürece.
Stephen Chung,

Ayrıca, açıkça herhangi bir klasörü paylaşmak zorunda değilsiniz net use, varsayılan yönetici paylaşımlarını kullanabilirsiniz:net use x: \\localhost\c$\bar\folders /persistent:no
kapex

9

Bulduğum en basit yol, bir ubuntu canlı CD'sinden başlatmak.

Alternatif olarak, yolun yarısında paylaşılan bir klasör oluşturabilir ve ardından bir ağ sürücüsünü buna eşleyebilir ve eşlenen klasörden (aynı makinede bile) silme işlemini yapabilirsiniz.


17
Bir Ubuntu Live CD'sinin Windows sorunlarını
gidermede

1
Kendimi, tehlikeli ağın canlı bir CD, dosya sistemi sorunu ise canlı bir CD, bozuk bölüm tablosu vb. Denediğini fark ettim. :-)
Col

Bu benim için çalışan tek çözüm. Seni seviyorum Linux! <3
David Frye

1
Windows'tan bash çalıştırın Hiçbir Linux gerekli. ;-) Ayrıca Windows 10 çalıştırıyorsanız, sadece “Linux için Windows Alt Sistemi” yükleyin; temelde Windows, işi yapmak için ubuntu api kancalarını kullanır ... "apt, ssh, rsync, bulmak, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, yakut, php, gcc, katran, vim, emacs, diff, patch ve Ubuntu arşivlerindeki onbinlerce ikili paketin çoğu! "Bu, yalnızca Windows'ta çalışmakta olan oldukça dolu bir Linux geliştirme ortamı. Zdnet.com/article/ubuntu-and-bash-arrive-on-windows-10
Dawesi

cygwin, LINUX komutlarını pencerelerde çalıştırmak için başka bir alternatiftir
atom88

5

Dosyayı kesip yapıştırın dizinini başka bir yere yeniden adlandırın ve silin. Burada çalışıyor.

Ya da sadece komut isteminden, eğer beladan geçmek istemiyorsanız.


Bu bir cazibe gibi çalışır. Oraya kazın (benim için süper iç içe node_modulesklasörlerdi), masaüstünüze sürükleyin ve silin. Bir seferde birkaç klasör yukarı giderken durulayın ve tekrarlayın. Ne kadar iğrenç bir problem.
takma

7
Bu benim için işe yaramadı - uzun dosya adı nedeniyle yapıştırma işlemi başarısız oldu - nerede kesildiği önemli değil.
UpTheCreek

1

Muhtemelen en iyi yol değil ve başkalarının ne ortaya çıktığını görmek istiyorum.

Bunu bir kez yaşadım ve şanssız bir kaç şey denedim. İyi bir araç aramaktansa, Windows Disk ile yeniden başlattım, kurtarma konsoluna gittim ve oradan sildim. İlk kez çalıştı ve gerçekten çok iyi!

Ayrıca, sadece sizin için bir Google yaptım ve bunu buldum - DelinvFile İyi Görünüyor ama buna kefil olamaz.

Düzenleme - Uyarı, sadece yukarıda görülen bir denemedir - Belki de ilk düşündüğüm kadar iyi değil!


Serbest rimraf diğer tüm fikirler başarısız olduğunda gayet iyi çalışıyor ve çalışıyordu. Bu node.js gerektirir
Julian Knight
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.