Löschen Sie unter Windows eine Datei mit dem Namen „NUL“.

Lesezeit: 5 Minuten

Ich habe ein Programm unter Windows 7 ausgeführt, das unter Cygwin kompiliert wurde und “NUL” als Ausgabedateiname übergeben hat. Anstatt die Ausgabe zu unterdrücken, wurde tatsächlich eine Datei namens “NUL” im aktuellen Verzeichnis erstellt. (Anscheinend erwartet es “/dev/null”, sogar unter Windows.) Jetzt stecke ich mit dieser “NUL”-Datei fest, die ich nicht löschen kann!

Ich habe bereits versucht:

  • Windows Explorer – Fehler: “Ungültige MS-DOS-Funktion” (ja, das steht im Ernst!)
  • Eingabeaufforderung mit „del NUL“ – Fehler: „Der Dateiname, der Verzeichnisname oder die Syntax der Datenträgerbezeichnung ist falsch.“
  • Löschen des gesamten Verzeichnisses – genauso wie das Löschen der Datei
  • remove() in einem C-Programm – schlägt ebenfalls fehl

Wie kann ich diese NUL-Dateien loswerden (ich habe inzwischen mehrere), außer die vollständige Cygwin-Umgebung zu installieren und dafür ein C-Programm unter Cygwin zu kompilieren?

  • Hast du es versucht del *.*?

    – chqrlie

    10. Juli 2021 um 18:32 Uhr


  • Besser noch, wie kann man seine Entstehung verhindern?

    – Dragos Bandur

    10. Dezember 2021 um 21:10 Uhr

Benutzeravatar von xxbbcc
xxbbcc

Öffnen Sie eine Eingabeaufforderung und verwenden Sie diese Befehle, um die NUL-Datei zuerst umzubenennen und dann zu löschen:

C:\> rename \\.\C:\..\NUL. deletefile.txt
C:\> del deletefile.txt

Verwendung der \\.\ prefix weist die übergeordneten Datei-E/A-Funktionen an, den Dateinamen ungeparst an den Gerätetreiber zu übergeben – auf diese Weise können Sie auf ansonsten ungültige Namen zugreifen.

Lesen Dieser Artikel über gültige Datei-/Pfadnamen in Windows und die verschiedenen reservierten Namen.

  • Interessanterweise kann Far Manager diese Datei ohne Probleme löschen. Vielleicht wendet es diesen Trick intern bedingungslos an.

    – Joey

    26. Juli 2013 um 14:31 Uhr

  • Vielen Dank! Sogar das direkte Löschen scheint zu funktionieren, wenn ich das Präfix \\.\ vor dem vollständigen Pfad verwende, z. del \\.\C:\Temp\NUL

    – EM0

    26. Juli 2013 um 14:37 Uhr

  • @Јοеу Auf meinem Windows 8 hatte Far Probleme mit dem Löschen/Erstellen einer Datei namens „nul“, aber ich verwende v1.75 – v3.0 hat diese Funktion möglicherweise hinzugefügt.

    – xxbbcc

    26. Juli 2013 um 14:37 Uhr

  • Es hat für mich funktioniert. Es ist wichtig, daran zu denken, den Dateipfad wie folgt zu beginnen: \\.\C:\

    – Revolutionär

    20. November 2013 um 19:22 Uhr

  • Im Allgemeinen ist es besser, „\\?\“ anstelle von „\\.\“ zu verwenden, da das Fragezeichen-Präfix die gesamte Normalisierung umgeht, einschließlich des Entfernens nachgestellter Leerzeichen und Punkte. Es wird genau der Name übergeben, den Sie in Anführungszeichen übergeben, z. B. “\\?\C:\nul. “, während “\\.\C:\nul. ” normalisiert wird als “\\.\C:\nul”. .

    – Eryk Sonne

    28. Oktober 2019 um 21:10 Uhr

Wenn Sie Git für Windows installiert haben (v2.18), gehen Sie wie folgt vor

  1. Öffnen Sie das Verzeichnis mit den Dateien, die Sie entfernen möchten
  2. Linksklick und auswählen Git Bash Here
  3. Typ rm nul.json an der Eingabeaufforderung und drücken Sie die EINGABETASTE, die Datei sollte jetzt entfernt werden.

Führen Sie Git Bash hier aus

HINWEIS: Diese Screenshots zeigen das Entfernen der Datei nul.topo.json Dies ist eine weitere Datei, die ich nicht durch einfaches Löschen entfernen konnte.

nach Befehlsausführung

  • Dies löst ein anderes Problem. OP versucht, eine Datei namens “NUL” zu löschen, die ein Schlüsselwort in Windows ist.

    – Zach

    7. Oktober 2018 um 13:11 Uhr

  • Mein Beispiel gilt auch für Dateien mit dem Namen NUL (ich habe es bestätigt)

    – Geovani Martínez

    8. Oktober 2018 um 16:58 Uhr

  • Danke, genau das hat mein Problem hervorragend gelöst !! Wie Zack sagt, löst dies ein anderes Problem, aber es scheint, als würde ich hier direkt googlen.

    – Brian

    23. Februar 2019 um 10:23 Uhr


  • Diese Lösung hat bei mir funktioniert, es scheint, dass die Windows-CMD die Datei nicht aus einer Erklärung löschen kann, die ich gefunden habe. Win32-Tools können nicht auf diese Datei zugreifen – daher ist die Git-Bash und die Verwendung von rm eine gute Lösung.

    – Lupine

    3. April 2019 um 11:48 Uhr

Wenn Sie Git unter Windows haben, klicken Sie einfach mit der rechten Maustaste auf den Ordner, der die Nulldatei enthält -> gehen Sie hier zu Gitbash -> und geben Sie je nach Dateityp “rm nul” oder “rm nul.json” ein.

Ich hatte ein ähnliches Problem. Es wurde wahrscheinlich auch von Cygwin verursacht (da ich dies regelmäßig verwende), aber ich habe seitdem vergessen, wie genau die Datei erstellt wurde.

Ich hatte auch Probleme es zu löschen. Ich habe den Rat einiger anderer Posts befolgt und versucht, in den abgesicherten Modus zu booten, um die Datei zu löschen, obwohl dies nichts bewirkt hat. Der Tipp von +xxbbcc hat bei mir auch nicht funktioniert.

Ich konnte die Datei jedoch mit dem Cygwin-Terminal löschen! Cygwin erschafft und Cygwin zerstört.

So entfernen Sie eine Nulldatei, die sich hier befindet: C:\unix\cygwin\dev\nul

Ich verwende einfach (nur unter Windows 10 getestet): Del \?\C:\unix\cygwin\dev\NUL

Benutzeravatar von spryce
Spryce

Ich habe das etwas anders gelöst.

Ich dachte, ich würde das hier hinzufügen, weil es in den Google-Ergebnissen weit oben steht und ich ein ähnliches Problem für a hatte Mappe mit dem Namen NULL.

Ich habe es versucht rmdir\\?\C:\My\Path\NUL und rmdir\\.\C:\My\Path\NUL ohne Erfolg und habe auch mehrere Befehle mit Bash aus meiner SourceTree-Installation ausprobiert. Keine Freude.

Am Ende habe ich verwendet DIR /X /A von cmd, um die Kurznamen im übergeordneten Verzeichnis aufzulisten. Das hat mir gezeigt NUL~1 für meinen NUL-Ordner und identifizierte den Kern des Problems.

Dies wurde dann im Standardbefehl verwendet rmdir /s NUL~1 und das Problem endlich gelöst.

Benutzeravatar von asdf
asdf

Versuchen Sie, ein kurzes C-Programm zu schreiben, das die Windows-API aufruft, um diese Datei zu löschen.

http://msdn.microsoft.com/en-us/library/aa363915%28v=vs.85%29.aspx

Wenn das nicht funktioniert, versuchen Sie, ein Handle für die Datei mit CreateFile() mit FILE_FLAG_DELETE_ON_CLOSE zu öffnen, und schließen Sie dann das Handle.

  • Ziemlich sicher, dass dies von der Win32-Schicht so interpretiert würde, dass es sich auf das sogenannte “DOS” -Gerät bezieht, nicht auf die Datei. (Vermutlich würde das “DOS”-Gerät nicht wirklich gelöscht werden, denn wenn das etwas gewesen wäre, das aus Versehen geschehen könnte, dann bin ich mir ziemlich sicher, dass es jemandem passiert wäre, der hier oder bei mitgemacht hat superuser.com/questions/282194/… …)

    – SamB

    18. Juni 2017 um 15:49 Uhr

1418350cookie-checkLöschen Sie unter Windows eine Datei mit dem Namen „NUL“.

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy