web-dev-qa-db-ger.com

Löschen Sie eine Datei mit dem Namen "NUL" unter Windows

Ich habe ein Programm unter Windows 7 ausgeführt, das unter Cygwin kompiliert wurde und als Ausgabedateiname "NUL" übergeben hat. Statt die Ausgabe zu unterdrücken, wurde im aktuellen Verzeichnis eine Datei mit dem Namen "NUL" erstellt. (Anscheinend erwartet "/ dev/null" auch unter Windows.) Jetzt bleibe ich bei dieser "NUL" -Datei, die ich nicht löschen kann!

Ich habe schon versucht:

  • Windows Explorer - Fehler: "Ungültige MS-DOS-Funktion" (Ja, das sagt es ernst!)
  • Eingabeaufforderung mit "del NUL" - Fehler: "Der Name des Dateinamens, des Verzeichnisnamens oder die Bezeichnung des Volumes 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 (ich habe mittlerweile mehrere) loswerden, ohne die vollständige Cygwin-Umgebung zu installieren und ein C-Programm unter Cygwin zu kompilieren, um dies zu tun?

34
EM0

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

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

Wenn Sie das Präfix \\.\ verwenden, werden die Datei-E/A-Funktionen der übergeordneten Datei angewiesen, den Dateinamen ungeparst an den Gerätetreiber zu übergeben. Auf diese Weise können Sie auf ansonsten ungültige Namen zugreifen.

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

88
xxbbcc

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

  1. Öffnen Sie das Verzeichnis mit den Dateien, die Sie entfernen möchten
  2. Klicken Sie mit der linken Maustaste und wählen Sie Git Bash Here aus.
  3. Geben Sie an der Eingabeaufforderung rm nul.json ein und drücken Sie die EINGABETASTE. Die Datei sollte jetzt entfernt werden.

 run Git Bash Here

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

 after command execution

3

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

Ich hatte auch Probleme beim Löschen. Ich folgte den Ratschlägen einiger anderer Beiträge und versuchte, die Datei im abgesicherten Modus zu löschen, obwohl dies nichts tat. Der Tipp von + xxbbcc hat auch für mich nicht funktioniert.

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

3
Benmj

So entfernen Sie eine hier abgelegte NUL-Datei: C:\unix\cygwin\dev\nul

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

1
Olivier

Ich habe das etwas anders gelöst. 

Ich dachte, ich würde dies hier hinzufügen, weil es in den Google-Ergebnissen hoch ist und ich ein ähnliches Problem für einen Ordner namens NUL hatte. 

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

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

Dies wurde dann im Standardbefehl rmdir /s NUL~1 verwendet und das Problem schließlich behoben. 

0
spryce