Windows'ta “NUL” adlı bir dosyayı nasıl kaldırırım?


49

Üzerinde bir dosya bulduğum bir Windows XP kutum (NTFS dosya sistemi) var NUL. Bu dosyayı her zaman hiçbir şekilde kaldıramadım. Dosya ait gibi görünmektedir Administratoriçinde SYSTEMaynı dizinde herhangi bir başka dosya (diğer dosyalar benim kullanıcı kimliği aittir) farklı olarak, grubun.

Bu dosyadan nasıl kurtulurum? Nereden geldi?


3
NUL bir sistem ayrılmış kelimedir; Bu Wikipedia makalesine bakın . NUL adlı bir dosya dosya sisteminde asla bulunmamalıdır; bu buggy yazılımı nedeniyle olabilir. DELETEKomut İstemi'ni kullanarak komutu kullanarak kaldırabilirsiniz .
bwDraco

9
@DragonLord: Dosya sisteminin bu tür isimlerle bir problemi yoktur; örneğin, bir POSIX ortamında bu tür dosyaları oluşturabilirsiniz. (Bir kişi aux.cyazılım kaynak kodunda bulabilir ve benzer adlar bulabilir .) Bu "aygıt adlarını" yöneten tamamen Win32 API'dir.
Grawity

Aynısı CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9 ve SAAT için de geçerlidir $ artı birkaç diğerleri - bkz. en.wikipedia.org/wiki/…
robocat

Cygwin, genellikle "C: \ cygwin \ dev \ nul" de görülen "nul" adlı bir dosya oluşturur (veya buna kullanılır). Birkaç yılda bir vurduğum kişi bu, ben Google ve bu soruya geri döndüm.
zarchasmpgmr

Yanıtlar:


83

Deneyin

Del \\?\C:\My\Path\NUL

komut isteminde.

Ayrıntılar için bu Microsoft Destek makalesine bakın: NTFS dosya sistemi birimindeki bir dosyayı veya klasörü "Neden 5: Dosya adı, Win32 ad alanında ayrılmış bir ad içeriyor" altında silemezsiniz .


1
Teşekkürler! İşe yaradı! Ayrıca, yetkili belgelere gösterdiğiniz büyük referans için teşekkür ederiz. Bir web aramasında çok benzer bir şey buldum ama işe yaramadı. Bu öneri .yerine geçti ?.
Greg Matte

1
@Greg: Tabii! Belgeler @ DragonLord'un yardımıydı. :-) Ve evet, .yerine koymak ?aynı şeyi yapmaz - soru işareti alt sistem tarafından daha fazla işlem yapılmasını önler, oysa dönem "mevcut makine" anlamına gelir ... kesinlikle aynı olmasına rağmen kafa karıştırıcı. :)
Mehrdad

1
Bunun gerçekten demek olduğundan emin değilim. \\.\ Önek içindir cihaz ad Ancak, müstehcen söz hayır yoktur .o dizin adları için yaptığı gibi aynı anlama ( "geçerli X") vardır.
Grawity

4
Sizin çalışma dizini zaten dizin ise yukarıdaki çözüme alternatif olarak nuldosyaya şunları yapabilirsiniz: parçası çalışma dizinine genişletilir ve çift tırnak işareti ( ) Tüm kolu da mesela "garip" sembolleri ile pathnames bunu yapmak . del "\\?\%CD%\nul"%CD%""\\?\C:\path,with\comma\nul"
HenrikB

1
Powershell'den veya ortamımda yönetici olarak yükseltilmiş bir istemden etkili görünmüyordu, ancak standart bir terminalde etkili çalışıyordu.
JustinC

13

Alternatif olarak, eğer Cygwin'i kurduysanız, bunun böyle dosya veya klasörlerle bir sorunu olmadığını bilmek isteyebilirsiniz. Özellikle,

rm -r /cygdrive/c/path/to/the/file/or/folder/you/want/to/delete

Cygwin terminalinde yazılan dosya veya klasörü nulveya onu içeren klasörü siler . Bu aynı zamanda gibi diğer özel dosya adları için geçerlidir CON, PRN, AUX, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8.


2
ayrıca git bash ile çalışır
c33s 20:16

Git'i yüklediyseniz GNU rmkomutunu alırsınız, böylece cygwin'e ihtiyacınız olmaz. GNU araçları bin dizinini PATH'inize eklediğinizi varsayarsak, tüm GNU güzelliklerini cmd'den kullanabilirsiniz.
icc97

8

Bunu buraya ekliyorum çünkü google sonuçları yüksek ve NUL adlı bir klasör için de benzer bir sorunla karşılaştım . Ne yazık ki yukarıdaki düzeltmeler yardımcı olmadı. Baktığım tonlarca başka şey de yapmadım.

Başarısız ve denedim rmdir\\?\C:\My\Path\NULve rmdir\\.\C:\My\Path\NULSourceTree kurulumumdan bash kullanarak birkaç komut da denedim. Neşe yok

Sonunda DIR /X /Acmd'den üst dizindeki kısa adları listelemek için kullandım . Bu NUL~1benim NUL klasörüm için geri döndü .

Bu daha sonra standart komutta kullanıldı rmdir /s NUL~1ve nihayet sorunu çözdü.


Özel adı atlamak için kısa adı kullanmak oldukça akıllıca.
SamB

1

Git Windows için yüklü ise, aşağıdakileri yapın

  1. Kaldırmak istediğiniz dosyaları içeren dizini açın
  2. Sol Tıkla ve Seç Git Bash Here
  3. Tip rm nul.jsonistemi ve isabet ENTER emrinde, dosya artık kaldırılmalıdır.

Git Bash'i buradan çalıştır

NOT: Bu ekran görüntüleri, nul.topo.jsonbasit bir silme ile kaldırılamadığım başka bir dosya olan dosyanın kaldırılmasını gösteriyor.

komut çalıştırıldıktan sonra

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.