Normal silme için yol / adlar çok uzun olan dizinler nasıl silinir


380

Windows, silmeye çalışırken dosya adlarında bir uzunluk sınırına sahip görünüyor, ancak bu dosyaların oluşturulmasını engellemeyecek.

Derleme işlemimiz, bu sınırın bir türünü çalıştıran birkaç geçici dosya (bir WSDL'den derleme) oluşturur. Bizim karınca betiği bir şekilde temizlerken bunları silmek mümkün, ama bazen aslında ant gelen tam bir temizlik yapmadan workarea dizini (tüm geçici dosyaların gittiği yer) silmeliyim.

Bu, bu sorunun aynı hataları , ancak oradaki cevaplar benim için gerçekten işe yaramıyor, çünkü bir dosyayla değil, bir dizinle ilgileniyorum ve soruna hangi belirli dosya veya alt dizinlerin neden olduğunu her zaman bilmiyorum. Ve aslında onları silmek için herhangi bir manuel işlemden (tek bir komutu tetiklemekten başka) kaçınmaya çalışıyorum.

Dizini Explorer'dan silmeyi denersem hatayı alıyorum

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

Powershell'de denemek Remove-Itemaşağıdaki hatayı veriyor:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

Sorunlu dosyaları manuel olarak bulup taşımadan / yeniden adlandırmak zorunda kalmadan herhangi bir araç veya bu silme hatasını aşmanın kolay yollarını bilen var mı?


2
Bu soruyu yayınlamadan hemen önce çözümü buldum, ancak başkaları buna bulaştığı için karşılaştığım çözümü bulabilmek için göndermeye karar verdim.
Herms,

Oh biliyorum, ama genel olarak böyle şeyler yaptığımda, bir başkasının daha iyi bir çözümü olup olmadığını görmek için bir süre "cevapsız" sorusunu bırakıyorum.
Herms,

By Far : En basit çözümü youtube.com/watch?v=qQTyTprFAOg
Taw

kullanarak Ubuntuveya başka bir Linux Bootable CDbilgisayarı Ubuntugeçici olarak çalıştırabilmemiz için bilgisayarınızı veya başka bir işletim sisteminden önyükleyebiliriz. Sonra klasörü seçip kolayca silebiliriz.
Kelum Priyadarshane

1
Bu eski sorunun da bazı ilginç cevapları var: superuser.com/questions/45697/…
AdamV

Yanıtlar:


421

Bunları silmek için 7-Zip Dosya Yöneticisini kullanın.

Hala sorun yaşıyorsanız , 7-Zip Dosya Yöneticisi içinde Shift+ kullandığınızdan emin olun Delete. Aksi halde, Windows bunları Geri Dönüşüm Kutusu'na taşımaya çalışır (yeniden başarısız olur).


5
Teşekkürler - bu biraz özyinelemeli ve del / rmdir / rm / explorer'ın kaldırılması için çok derin olan bir dir ağacından kurtuldu
Martin Beckett 15

63
shift + Del - 7zip kullanarak çok iyi çalıştı, geri dönüşüm kutusuna uzun patlamalı dosyalar gönderemedi ....
cori

66
+1 7 zip. Klasöre shift + Delgitmelisin ve sonra @cori'nin kullandığı gibi kullan. DeleteSeçeneği bağlam menüsünden seçerseniz, WILl burada başarısız olur. shift + Delo!
Urda

8
7zip win7 64 için işe yaramadı, bu yüzden linux yaptı.
Erik Friesen

13
Bunu, çünkü 7zip ile içinde uzun iç içe klasörler içeren bir klasörü de silebilirsiniz. Benim sorunum bir sürü ton iç içe klasör içeren bir node_module klasörü ile vardı ve kaldıramadım. Temel klasörden 7zip kusursuz şekilde sabitlenmiş. +1
Gruber

310

Buradaki diğer (ücretsiz) cevapların hiçbiri benim için işe yaramadı, ancak başka bir sitede buldum:

rimraf <dir>

rimraf bir Node.js paketidir, bu yüzden npm içeren Node.js'yi kurmanız gerekecektir . Sonra koşabilirsiniz:

npm install -g rimraf

Sonra rimrafkomut satırından çalıştırabilirsiniz .

Bu çözümü buldum çünkü npm bağımlılığa iç içe geçme şekline bağlı olarak bu soruna neden oluyordu.

Bu arada, rimrafadını rm -rftekrar tekrar dosya ve klasörleri silen UNIX komutundan alır .


7
Birçok yol denedim. Bu sadece mükemmel çalışıyor!
Duckegg

2
En iyi cevabı :) evet kolay telaş
Al-Mothafar

2
Bu kabul edilen cevap olmalı.
NINCOMPOOP

13
Çözümün işe yarıyor ama bu kadar # # k-up, düğüm js modül klasörlerini silmek için bir düğüm js modülü kullanmak zorundayım ... Artık bu gezegende yaşamak istemiyorum
Benoit P

4
Düğüm sorunu benim için ilk etapta yarattı, bu yüzden ... ilginç ... aynı zamanda bir çözümleri de vardı.
Eric J.

141

Orada herhangi bir program yüklemeye gerek bu sorunu çözmek için.

Bu sorun, robocopy2006'da piyasaya sürülen Windows Vista'dan bu yana önceden kurulmuş olarak kolayca çözüldü .

Örneğin, rmdir /S /Q <dir>bazı durumlarda başarısız olduğu bildirilmiştir. 7zip veya başka bir 3. parti araç kullanmanıza gerek yoktur. Powershell bir overkill. Cygwin işe yarayabilir, ancak yüklü olmayabilir. Hadi odaklanalımrobocopy

Fikir etmektir

  1. robocopykopyalamak için kullanın + güncellendi
  2. Bir gelen yeni boş bir klasöre
  3. Hedefi silmek istediğiniz klasöre

Çalıştırdıktan sonra robocopy, hedef dizin de boş olacaktır.

Bu talimatlar komut satırı içindir. Sadece aramayı Windows'da açıp cmdEnter tuşuna basın.

Diyelim ki silme hedefi :

C:\delete\this folder\with a very long name

Aşağıdaki şekilde devam ediyoruz:

  1. İlk önce boş bir dizin oluşturun, fi C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Seçeneği kullanarak boş dizinden hedefe Kopyala + güncelleme /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. Boş dizini silin. Artık ona ihtiyacın yok.

    rmdir c:\emptyfolder
    

Kaynak dizinde ( C:\emptyfolder) hiçbir dosya veya klasör olmadığından , yalnızca hedef dizinin ( C:\delete\this folder\with a very long name) altındaki dosyaları ve klasörleri tekrar tekrar siler !

  • Son numara: elle yazmaktan kaçınabilirsiniz

    C:\delete\this folder\with a very long name
    

    Klasörü bir Explorer penceresinden sürükleyerek ve Terminal / cmd penceresine bırakarak.

Dikkatli olun : Silinen dosyalar çöp kutusuna gitmeyecek ! Silindikten sonra dosyalar kurtarılamaz.

( BVLANGEN'den "Yol çok uzun mu? Robocopy kullan" dan alınmıştır )

Not: Bu cevabın burada daha az didaktik olarak olduğunu fark ettim. Windows'da çok uzun bir dosya adı olan bir dosyayı nasıl silebilirim? [çift]

Benoit ekledi:

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


11
Teşekkürler iyi efendim !! Bu, diğerlerinin ya çalışmadığı ya da bir 3. parti aracı gerektirdiği için kabul edilen cevap olmalıdır . :)
MickyD

Bu mükemmel çalışıyor ... bir şey yüklememe gerek yok (bildiğim kadarıyla) ve hızlı. Bu kabul edilen cevap olmalı!
ksumarine

1
Bu, dizin ağacının bir kısmını (veya tamamını) "c: \ deletefolder" (hedef dir) altında tutar. Neyse, her şey benim açımdan her şeyi silindi (sanırım dosyalar küçüktü) ve sadece el ile <Del> "c: \ deletefolder" yapmak zorunda kaldım, alt dizinler sorun çıkarmadan kaldırıldı. Bir cazibe gibi çalıştı. +1, kabul edilen cevap olmalı! :)
rld.

@rld, fakat "silme klasörü" önceden var mıydı? Aksi takdirde, yeni bir dizin olsaydı boş olması gerektiğini düşünüyorum. Aksi takdirde bir karışıklık var. "Rmdir deletefolder" için son bir adım ekleyebilirim.
hectorpal

1
Çok özyinelemeli dizinlerle uğraşırken, bu seçenek 7zip'ten çok daha yavaştır. 20 dakika bekledikten sonra, onları karşılaştırdım ve 7zip farkettim, ilerlemenin 50 kat daha hızlı çalıştığını göstermese de.
Andy Gauge

84

Bir şeyi silmek için bir yol bulduğuma inanıyorum cmd. Başlangıçta delemri denedim ama işe yaramadı. Sonra hatırladım rmdir. Aşağıdakileri yapın:

rmdir /S /Q <dir>

işe yaramış gibi görünüyor.


105
Benim için işe yaramadı. :(
Andrew Arnott

rmdir'i çalıştırmadan önce cmd'ye bırakmayı unutmayın.
brianpeiris

8
Bu çözümü kullanamayanlar için benim için çalışan alternatif bir çözümüm var (çok uzun yol / dosya adlarıyla): Yolu / kısaltmak için dosyaları / dizini C: \ konumuna getirin, sonra oradan silin.
Anders Sandberg Nordbø

6
Bu çözümün işe yaramayacağı, 7-Zip'in silebileceği dizinlerin olması mümkündür. Bu sadece başıma gelmişti.
SamStephens

2
Bu çözüm tutarsız sonuçlar elde ediyor. Lütfen oy kullanma.
hectorpal 13.06

29

Bu problemi yaşadığımda kullandığım araç FastCopy idi . Seçtiğim Tüm sil , açılır menüden silen istedim dizin seçilir ve tıklandığında Tüm sil .

FastCopy silme iletişim kutusu ekran görüntüsü

FastCopy taşınabilir (kurulum gerekmez) ve kullanılabilir 32 bit ve 64 bit sürümleri vardır.


3
Bir komut satırı aracı arıyorsanız GitHub'da yayınladığım küçük bir araç kullanabilirsiniz ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

Özyinelemeli oluşturulmuş bir yuvalanmış dosya / klasör grubum vardı. Bu tek çözüm çalışmasıydı
Pierluigi

2
Bu, benim için çalıştı, komut satırı öğeleri başarısız oldu, 7zip girişimi başarısız oldu. ve hatta Microsoft desteği güdük oldu!
Kit Ramos,

Aynı burada - 7zip ile dosyaları silmeye başladım, ama aynı zamanda çok garip davrandı ve üst üste her dizinde Shift + Delere yapmak zorunda kaldım ama aslında silmek için bir çekicilik yaptım ama bir çekicilik gibi çalıştım. . Tüm dosyalardan kurtulmak için iki kez başlattım. Teşekkürler!
Artanis

Teşekkürler, benim için de çalışan tek çözüm, BÜYÜK !!!!
tim

26

Ek bir yazılım yüklemeden subst, uzun bir dizine geçici olarak bir takma ad oluşturmak için komutu kullanabilirsiniz .

Örneğin, klasörü silmek C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deletedistiyorsanız, komutu kullanabilirsiniz.

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

ve sonra X:\folder to be deletedWindows Gezgini'nde veya komut isteminde kolayca silebilirsiniz . Geçici sürücü harfinin diğer adını kaldırmak için komutu kullanın.

subst x: /d

Diğer tüm cevapları denedim (diğer benzer soruların cevapları dahil) ve bu benim için çalışmaya başlayan tek cevaptı. Ve en hızlısıydı.
glenneroo

1
Bu, şu ana kadarki en iyi cevap: basit, yerleşik özellikler, kayıt defteri ile uğraşmak yok. Kabul edilen cevap olmalı.
Kevin Roche

Kolayca en temiz ve en basit yöntem, teşekkür ederim Kenneth.
Seth

Bu cevap beni korkutuyor, çünkü aslında bir X: sürücüm var. Burada yeterli bilgi yok ve insanların daha fazla açıklama yapmadan bunu takip etmesini önermiyorum.
qodeninja

25

Cygwin's rm -rfuzun yollarda iyi çalışıyor!


3
Cygwin benim için mükemmel çalıştı! Sadece bir -rm -rf yaptım ve tüm dosyalar silindi.
Ranhiru Jude Cooray 23:14

3
Benim için de GNU bash altında çalıştı, sürüm 4.1.10 (4)
-hareket

2
Git Bash komut penceresinden çalışırken harika çalıştı. Bunun için GitGui'yi kurmuştum.

22

Powershell'den aşağıya doğru koşarak komuta bırakmanız yeterlidir:

Cmd /C "rmdir /S /Q <dir>" 

3
Msgstr "Dizin boş değil". Hata. OP, boş olmayan bir klasörü silmek istiyor.
leye0

Bunun @herms'in cevabından farkı ne?
bigbadmouse

18

Dentrasi'nin çözümü benim için en iyi olanıydı , ancak belirli adımları en üst düzeyde bir yanıtla göndermek istedim.

  1. 7zip'in en son kararlı sürümünü indirin ve yükleyin .
  2. 7zip Dosya Yöneticisini ( 7zfm.exe ) çalıştırın.
  3. 7zip Dosya Yöneticisinde, silmek istediğiniz klasörün adını görebileceğiniz şekilde gezinin (ör. Ana klasördesiniz).
  4. Shift düğmesini basılı tutun.
  5. Klavyenizdeki veya 7zip Dosya Yöneticisi araç çubuğundaki " Sil " düğmesini tıklayın; Shift tuşunu hala basılı tuttuğunuzdan emin olun .
  6. " Tamam " düğmesini tıklayın; Shift tuşunu hala basılı tuttuğunuzdan emin olun .

İyi deneme ama hala 10'lu özyinelemeli klasörler için işe yaramadı. Sadece rimraf çalıştı.
Julian Knight

@JulianKnight: Evet, bu yaklaşım da zamanın% 100'ünde benim için çalışmaya son vermedi. Sadece şunu söylemek istedim çünkü daha basit süreçler arasındaydı ve en azından zamanın bir parçasıydı. Zamanın% 100'ünde çalıştığını bulduğum tek şey, aşağıda açıklanan Powershell + NTFSSecurity modülü komut dosyası yaklaşımı. IIRC rimraf çağrıldığında başarısız oldu, ilk başta bu karışıklığa bu şekilde girdim. Ayrıntılar için bu Node.js başlığına
Mass Dot Net

Evet, her zaman böyle problemler olacak. Aslında beni (Java) yapan Arduino IDE'nin kütüphane kurulum koduydu, yanlışlıkla kütüphaneleri içeren klasörü seçip kütüphane kurmak için kullandım! Süreci farkettikten hemen sonra öldürdüm ama zaten 10'lu klasör klasörleri (lanet i7 / SSD!) NPM'nin bir sonraki ana sürümünde, Node'ların derin kütüphane kurulum sorunlarının çözülmesine yardımcı olması gerekiyordu; çok daha sade bir yapı. Hala birisinin beni rimraf etmesine sevindim - kolay ve özgür.
Julian Knight

@JulianKnight - Evet, bir ya da iki gün önce birisi, npm3'ün derine iç içe bağımlılık klasörü yapılarını önleyerek bu sorunları hafifletmeye yardımcı olacağını söyledi.
Mass Dot Net

"Önler" mi bilmiyorum ama iç içe bağımlılıkları daha mantıklı bir şekilde ele alıyor, böylece ana uygulamanız X v1.0 kütüphanesi gerektiriyorsa ve Y kütüphanesi X v1.0 gerektiren Z gerektiriyorsa, üst düzey kitaplık kullanılacaktır. Z şu an kendi X sürümünü yükleyecekti.
Julian Knight

11

Mevcut cevaplarda daha önce bahsedilmeyen iki şey var.

  1. Uzun yollara erişmek için uzatılmış uzunluk yolu ön ekini kullanabilirsiniz.
  2. Windows 10 ile genel kullanım için uzun yol desteğini etkinleştirebilirsiniz - bununla birlikte, tüm uygulamaların uzun yollarla çalışmayacağını, eski yazılımı test etmeniz gerektiğini unutmayın. Yalnızca uygun bir bildirim girişi olan yazılımlar bundan yararlanabilir.

Uzun Yol Öneki

Windows API, en fazla 32k karakter uzunluğunda Unicode yol adlarını destekleyen özel bir işleve sahiptir (her bir öğe 255 karakter uzunluğunda olabilir).

Bu genellikle yanlışlıkla UNC isimlendirmesi olarak adlandırılmaktadır, ancak ilişkili olmadığı söylenemez.

API'ye uzun Unicode yolları kullanmasını söylemek için kullanılan önek aşağıdaki gibidir \\?\:

\\?\D:\very long path

UNC adları normalde formdaki uzak sunuculardaki yollara başvururken kullanılır \\servername\path name\file name. Bunu, uzun yol öneki ile birleştirebilirsiniz;\\?\UNC\server\share

Bazılarının, zayıf yazılmış, ancak ne yazık ki oldukça yaygın olan uygulamaların UNC dosya yollarını ve uzun yol önekini desteklemediğini unutmayın.

Referans: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Uzun yol desteği

Bu, Windows 10'un son sürümlerine eklenmiş bir seçenektir. Yazma sırasında, belirli bir uygulama desteği gerektirdiğinden varsayılan olarak etkin değildir. İlginçtir, PowerShell yerleşik olarak desteklemektedir, bu yüzden bu seçeneği etkinleştirmek, uzun yolların doğrudan PowerShell scriptlerinde kullanılmasına izin verecektir.

Bununla birlikte bir Windows sürümüne sahipseniz, onu Grup İlkesi düzenleyicisi ile etkinleştirebilirsiniz. Veya sadece aşağıdaki Kayıt defteri değişikliğini kullanabilirsiniz. Her zaman olduğu gibi, lütfen bir şey yapmadan önce değiştirdiğiniz kayıt defterinin bölümünü yedekleyin.

  1. Run regedit.exe.
  2. UAC istemini onaylayın.
  3. Anahtara gidin: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Anahtarı oluşturun veya değiştirin LongPathsEnabled.
  5. Eğer yoksa, Politikalar'a sağ tıklayın ve menüden Yeni> Dword (32-bit) Değeri'ni seçin.
  6. Etkinleştirmek LongPathsEnablediçin ayarlayın 1.

Uygun bildirim girdilerine sahip tüm uygulamalar artık POSIX standart uzun yollarına erişebilecek. Bu, Windows Mağazası uygulamalarını içermelidir.

Referans: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

GÜNCELLEME 2017-04-09

@ Maoizm, yukarıdaki kayıt defteri anahtarında bir sorun olduğunu belirtti, bu yüzden daha fazla araştırma yaptım . Artık uzun dosya adı desteğini bir sistem anahtarıyla ayarlayabilirsiniz.

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

Bu, yine de yalnızca özellikle kullanmak için ayarlanmış olan uygulamalar için çalışır (uygulamanın manifest.xml dosyasına bir giriş gerektirir).

Ayrıca, göreli yol adlarını bu yöntemle kullanamayacağınızı da unutmayın.


{48981759-12F2-42A6-A048-028B3973495F}Machinekayıt yolunun parçası her bilgisayarda farklı olacaktır - bu herkes için açık değildir olabilir
maoizm

1
@ Maoizm - İyi nokta, bunu vurguladığınız için teşekkürler. W10 Yıldönümü güncellemesini veya daha sonraki bir sürümünü kullanıyorsanız lütfen alternatifim için güncellememe bakın.
Julian Knight

FoundationIO adlı bir kütüphane yazıyorum ve uzun yolu varsayılan olarak ayarlamaya çalışıyorum, arayabileceğim herhangi bir işlev var mı veya uzun yol desteğini kütüphanemdeki herhangi bir kullanıcı için otomatik olarak etkinleştirmek üzere ayarlayabileceğim herhangi bir işlev var mı?
Marcus

Merhaba Marcus, bu bir yerli Windows kütüphanesi mi? Öyleyse, .NET, ilgili Windows API'sinin bir parçası olarak zaten gerekli desteğe sahiptir - üzgünüm, .NET veya Win API programcısı olmadığım için ayrıntıları bilmiyorum, ancak ayrıntıların MSDN'de aranabilmesi gerekir.
Julian Knight,

8

Cmd çözümünü severim. Sadece Explorer'da çalışan başka bir geçici çözümü paylaşmak istememe rağmen: silme işleminden önce ana klasörlerin adlarını kısaltmaya çalışın: kısa adlar yolu kısaltır. Diyelim, klasörün şu ağaç yapısına sahipsin:

C: \

.. Projeler

.. .. 2014 baharında bazı müthiş projeler

.. .. .. Cuma günü şehirdeki parkın bir kısmı

.. .. .. .. Bla bla bla bla bla bla bla bla bla

.. .. .. .. .. Uzun adlara sahip gerçek dosyalar

Bu durumda klasörleri silemezsiniz, dosyaları da silemez veya yeniden adlandıramazsınız. Tüm klasör yapısını veya bir kısmını kaldırmak istiyorsanız, üst klasörleri geçici olarak yeniden adlandırabilir ve yolu kısaltabilir ve ardından klasörü kaldırabilirsiniz. İsimler sadece harfler olabilir:

C: \

.. Projeler

.. .. x

.. .. .. y

.. .. .. .. z

.. .. .. .. .. Uzun adlara sahip gerçek dosyalar

Benim durumumda sadece birçok alt klasör ve dosya ile tüm klasörü kaldırmak istedim. Bu yüzden klasörlerin isimlerini umursamıyordum.


1
Bunu yapan ve GitHub'a koyan küçük bir araç yazdım. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud

1
Tüm komutlar veya Shift + DEL benim için çalışmıyor, ama bu işe yarıyor.
larkee

10'luk iç içe klasörler varken gerçekten işe yaramaz
Julian Knight

Ayrıca, klasörlerden birinin gerçekten uzun bir adı varsa da çalışmaz (soruna neden olan klasörü yeniden adlandıramazsınız).
aucuparia

7

7 fermuarlı çözüm harika çalışıyor. Eğer gitmişseniz başka bir seçenek bir bash kabuğunu açıp kullanmaktır:

rm -f

(veya rm -rfklasörler için)


1
Başlatılmamış olanlar için lütfen Windows'ta "bir bash kabuğunu" nasıl açtığınızı açıklayınız
OMY

1
@OMY yüklü git gerekir. Daha sonra başlat menüsünden git bash'i açabilir veya git'i kurduğunuzda kabuk uzantılarını seçtiyseniz, bir klasöre sağ tıklayıp bir klasöre tıklayıp seçim yapabilirsinizGit Bash Here
Kullanıcı

4

Total Commander'ı öneririm (shareware, ancak deneme süresinden sonra sadece minimum nag başlangıç ​​ekranı ile çalışmaya devam ediyor). Her zaman çok uzun dosya adı sorunlarını çözme şeklim bu .


1
Tanrıya şükür, bunu buldum. Bir node_modules klasörünü silme ile ilgili sorunlar yaşıyorsanız, dizinleri aptalca yuvalamaya karar verir.
Takma ad

@Alias, Total Commander bu konuyu en azından benim için tespit etmeyi kolaylaştırıyor. Böyle bir sorunu belirledikten sonra chkdskçözmelisiniz.
Sopalajo de Arrierez,

Sürüm 7.0 çalışmıyor, bir hata mesajı veriyor ve aynı zamanda başarısız olan Yönetici olarak işlem yapmayı öneriyor.
izogfif,

@izogfif: bugünkü haliyle en son sürüm 8.52a. Bunu denerdim. Hata mesajınız hakkında ayrıntılı bilgi vermediniz, ancak arşiv yapısında (en azından NTFS için) "chkdsk c: / f" (sürücü C :) varsayarak) çözülmesi gereken bazı tutarsızlıklar olabilir.
Sopalajo de Arrierez,

2

Bunları eşdeğer kısa adlarını kullanarak da silebilirsiniz. dir /xonlara göstereceğim.


2

Dosyaları silmek için robokopi kullanan basit bir java programı oluşturdum. Kavanoz çalıştırılabilir bir tanesidir. Ek çıkış için cmd çizgisinden çalıştırın.

https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=sharing


2
Java kullanmak istemiyorsanız, .NET kullanarak yazdığım bu aracı kullanabilirsiniz ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

@ PierreArnaud harika bir yardımcı programdır. Komut satırı otomasyonu için böyle bir şeye ihtiyacım vardı. @ CamHart sizden de iyi iş çıkarıyor! Teşekkürler beyler!
17'de

1

Diğer tüm cevapları denedim, ama işe yaramadı (benim için en az).

Ben rastladım delinfile ve oldukça iyi ve oldukça hızlı bir şekilde çalıştı!

Deneme sürümü 3 işlem / 15 Gün ile sınırlıdır, ancak yalnızca birkaç klasör / dosyayı silmek istiyorsanız kullanılabilir.


1

Daha Büyük Dizinler de bu görev için tasarlanmıştır. görüntü tanımını buraya girin

  • İndir
  • Mevcut dizinleri silmek için RemoveDirectoryW ile özyinelemeli çağrı kullanır
  • Yeni oluşturulan dizinler için kendi dosya havuzunu kullanır.
  • Dosyalar, bulaşıcı dizinlerin silinmesinden önce dizinlerden taşınabilir.
  • Speedy, dizinin üstüne gitmek, iç içe geçmiş dizin başına bir tıklama olsa da
  • Windows XP (SP3) ve üzeri
  • Yükleyici olmadan imzasız yönetilmeyen kod, bu nedenle mümkün Yedek klasörden, örneğin masaüstünden çalıştırıldığında Akıllı ekran uyarısı.

CodeProject'de daha fazla bilgi .


Lütfen okuyun Yazılım önerisi hakkında nasıl gitmeniz gerektiği hakkında bazı ipuçları için yazılımı nasıl öneririm. En azından bir link, yazılımın kendisi hakkında bazı ek bilgiler ve sorudaki sorunu çözmek için nasıl kullanılabileceğini sağlamalısınız.
DavidPostill

@David: Daha iyi? Link çok faydalı oldu, teşekkürler.
Laurie Stearn

1

Windows 10'da bu sorunla karşılaştım ve bu kolay çözümü buldum.

  1. Klasör ağacınızın derinliklerine gidin.
  2. Adres çubuğunu kullanarak bir klasörü ağacın ortasından ortasındaki bir yere sürükleyip bırakın.
  3. Resmimde olduğu gibi kırmızı kutuyu yeşil kutuya sürükleyip bırakın. (bu durumda yol daha kısa, ancak uzun yollar için de işe yarıyor)
  4. Sonra yolunuz kısalır ve silme tuşunu kullanarak normal şekilde silin.

görüntü tanımını buraya girin


1

Burada mükemmel bir cevap var (dosyalar için). Windows 10'da çalışır.

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

Ayrıca bakınız: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath

İhtiyaçlarım için 4 soruda tek bir alternatif cevap yeterli değildi. Bir şey değil dünya.


0

Sonunda Powershell ile bunun nasıl yapıldığını öğrendim. İşte Windows 7'de çalışmasını sağlamak için uyguladığım talimatlar:

  1. Adlı yeni bir klasör oluşturun NTFSSecurity klasöründe C: \ Users \ XXXX \ Documents \ WindowsPowerShell Modüller \ NTFSSecurity \ , XXXX Windows kullanıcı adıdır. Örnek: eğer kullanıcı adım " aspnyc " ise, yeni klasör C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity olacaktır .

  2. İndir Dosya Sistemi Güvenliği PowerShell Modülü paketi - bu basit bir ZIP dosyası olarak mevcut olmalıdır.

  3. Bir Powershell konsolu açın, Get-Module -ListAvailable'i çalıştırın ve NTFSSecurity'in kayıtlı modüller listesinde herhangi bir yerde göründüğünden emin olun .
  4. Powershell konsolunda Alma Modülü NTFSSecurity'i çalıştırın .
  5. Powershell konsolunda Remove-Item2 "YYYY" -Recurse komutunu çalıştırın , burada YYYY , yinelemeli olarak silmek istediğiniz klasöre giden Windows yoludur (örn. C: \ Potatoes \ Badgers \ FolderToDelete ).

0

Sonunda bunu, Windows 10'da ayrı dosya adlarının çok uzun olduğu Powershell ile nasıl yapacağımı öğrendim. İşte bunun Windows 10'da çalışmasını sağlamak için izlediğim adımlar:

  1. İndir Dosya Sistemi Güvenliği PowerShell Modülü paketi - bu basit bir ZIP dosyası olarak mevcut olmalıdır.
  2. Zip dosyasını C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules dizininde NTFSSecurity klasörü olarak çıkarın.
  3. Yönetimsel yükseltmeyle (aka Yönetici Modu) bir Powershell konsolu açın ve Get-Module -ListAvailable'i çalıştırın ve NTFSSecurity'den emin olun kayıtlı modüller listesinde bir yerde .
  4. Set-ExecutionPolicy Sınırsız Çalıştır'ı çalıştırın imzalı yürütme modunu atlayacak. Bu işlemi Y (ler) ile onaylamanız gerekir.
  5. Sonunda silmek istediğiniz klasöre cd.
  6. Powershell konsolunda Alma Modülü NTFSSecurity'i çalıştırın .
  7. Powershell konsolunda Remove-Item2 "YYYY" -Recurse komutunu çalıştırın , burada YYYY , yinelemeli olarak silmek istediğiniz klasöre göreceli veya mutlak Windows yoludur (örn. C: \ Patates \ Porsuklar \ FolderToDelete ).
  8. İşe yarayıp yaramadığını kontrol et.
  9. Sonunda Set-ExecutionPolicy Restricted ile imzalanmış çalıştırma moduna geri dönün . Bu işlemi Y (ler) ile onaylamanız gerekir.

0

Windows'ta Ubuntu'da Bash'in kurulu olması durumunda, normal bir komut isteminde üst dizine cd yazıp şunu yazabilirsiniz:

bash -c "rm -rf dirname_here"

Bash'ı başlatan, dizini dosya adı kısıtlamaları olmayan linux'dan tekrar tekrar siler ve ardından normal komut isteminize geri döner.


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.