Eliminar un archivo llamado “NUL” en Windows

5 minutos de lectura

Ejecuté un programa en Windows 7 que se compiló bajo Cygwin y pasé “NUL” como nombre de archivo de salida. En lugar de suprimir la salida, en realidad creó un archivo llamado “NUL” en el directorio actual. (Aparentemente espera “/dev/null”, incluso en Windows). ¡Ahora estoy atascado con este archivo “NUL” que no puedo eliminar!

Ya he probado:

  • Explorador de Windows – error: “Función de MS-DOS no válida” (sí, ¡eso es lo que dice en serio!)
  • Símbolo del sistema utilizando “del NUL” – error: “El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta de volumen es incorrecta”.
  • Eliminar todo el directorio: el mismo trato que simplemente eliminar el archivo
  • remove() en un programa C – también falla

¿Cómo puedo deshacerme de estos archivos NUL (ya tengo varios), sin instalar el entorno Cygwin completo y compilar un programa C en Cygwin para hacerlo?

  • Has probado del *.*?

    – chqrlie

    10 de julio de 2021 a las 18:32


  • Mejor aún, ¿cómo prevenir su creación?

    – Dragos Bandur

    10 dic 2021 a las 21:10

Eliminar un archivo llamado NUL en Windows
xxxbbcc

Abra un símbolo del sistema y use estos comandos para cambiar el nombre primero y luego eliminar el archivo NUL:

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

Utilizando el \\.\ prefijo le dice a las funciones de E/S del archivo de alto nivel que pasen el nombre del archivo sin analizar al controlador del dispositivo; de esta manera, puede acceder a nombres que de otro modo no serían válidos.

Leer Este artículo sobre nombres válidos de archivos/ruta en Windows y los diversos nombres reservados.

  • Curiosamente, Far Manager puede eliminar ese archivo sin problemas. Quizás usa ese truco internamente incondicionalmente.

    – joey

    26 de julio de 2013 a las 14:31

  • ¡Muchas gracias! Incluso eliminarlo directamente parece funcionar si uso el prefijo \\.\ antes de la ruta completa, por ejemplo. del \\.\C:\Temp\NUL

    – EM0

    26 de julio de 2013 a las 14:37

  • @Јοеy En mi Windows 8 Far tuvo problemas para eliminar/crear un archivo llamado `nul’ pero estoy usando v1.75 – v3.0 puede tener esa función agregada.

    – xxbbcc

    26 de julio de 2013 a las 14:37

  • Funcionó para mí. Lo importante para recordar es iniciar la ruta del archivo como: \\.\C:\

    – revolucionario

    20 de noviembre de 2013 a las 19:22

  • En general, es mejor usar “\\?\” en lugar de “\\.\” porque el prefijo del signo de interrogación pasa por alto toda la normalización, incluida la eliminación de espacios finales y puntos. Pasará exactamente cualquier nombre que pase entre comillas, como “\\?\C:\nul. “, mientras que “\\.\C:\nul. ” se normaliza como “\\.\C:\nul”. .

    –Eryk Sun

    28 oct 2019 a las 21:10

Si tiene instalado Git para Windows (v2.18), haga lo siguiente

  1. Abra el directorio que contiene los archivos que desea eliminar
  2. Haga clic izquierdo y seleccione Git Bash Here
  3. Escribe rm nul.json en el símbolo del sistema y presione ENTER, el archivo ahora debería eliminarse.

ejecuta Git Bash aquí

NOTA: Estas capturas de pantalla muestran la eliminación del archivo nul.topo.json que es otro archivo que no pude eliminar con una simple eliminación.

después de la ejecución del comando

  • Esto resuelve un problema diferente. OP está intentando eliminar un archivo llamado “NUL”, que es una palabra clave en Windows.

    – Zack

    7 oct 2018 a las 13:11

  • Mi ejemplo también se aplica a archivos llamados NUL (lo confirmé)

    – Geovani Martínez

    8 oct 2018 a las 16:58

  • ¡Gracias, esto resolvió mi problema de manera brillante! Como dice Zack, esto resuelve un problema diferente, pero parece que Google me busca directamente aquí.

    – Brian

    23 de febrero de 2019 a las 10:23


  • Esta solución funcionó para mí, parece que Windows CMD no puede eliminar el archivo de una explicación que encontré que las herramientas win32 no pueden acceder a este archivo, por lo que git bash y usar rm es una buena solución.

    – lupino

    3 de abril de 2019 a las 11:48

Tuve un problema similar. Probablemente también fue causado por Cygwin (ya que lo uso regularmente), pero desde entonces olvidé exactamente cómo se creó el archivo.

También tuve problemas para borrarlo. Seguí los consejos de algunas otras publicaciones e intenté arrancar en modo seguro para eliminar el archivo, aunque esto no hizo nada. El consejo de +xxbbcc tampoco funcionó para mí.

Sin embargo, ¡pude eliminar el archivo usando la terminal Cygwin! Cygwin crea y Cygwin destruye.

  • Si tiene Cygwin, intente ‘rm NUL’. Funcionó para mí.

    – Jan Ehrhardt

    11 de mayo de 2017 a las 0:31

  • Tuve un problema similar al señalado por Jan E., excepto que estoy usando el Subsistema de Windows en Linux (WSL). WSL bash’s rm eliminó el archivo.

    -Bill Hoag

    16/11/2017 a las 19:50

Para eliminar un archivo nul situado aquí: C:\unix\cygwin\dev\nul

Simplemente uso (probado solo en Windows 10): Del \?\C:\unix\cygwin\dev\NUL

Si tiene git en Windows, simplemente haga clic derecho en la carpeta que contiene el archivo nul -> vaya a gitbash aquí -> y escriba “rm nul” o “rm nul.json” según el tipo de archivo.

1647579848 168 Eliminar un archivo llamado NUL en Windows
spryce

Resolví esto de una manera ligeramente diferente.

Pensé en agregar esto aquí porque ocupa un lugar destacado en los resultados de Google y tuve un problema similar para un carpeta llamado NUL.

Lo intenté rmdir\\?\C:\My\Path\NUL y rmdir\\.\C:\My\Path\NUL sin ningún éxito y también probé varios comandos usando bash de mi instalación de SourceTree. Sin alegría.

Al final usé DIR /X /A from cmd para listar los nombres cortos en el directorio principal. esto me mostró NUL~1 para mi carpeta NUL e identificó el quid del problema.

Esto luego se usó en el comando estándar rmdir /s NUL~1 y finalmente resolvió el problema.

1647579849 872 Eliminar un archivo llamado NUL en Windows
asdf

Intente escribir un programa corto en C que llame a la API de Windows para eliminar ese archivo.

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

Si eso no funciona, intente abrir un controlador para el archivo con CreateFile() con FILE_FLAG_DELETE_ON_CLOSE y luego cierre el controlador.

  • Bastante seguro de que esto sería interpretado por la capa Win32 como una referencia al llamado dispositivo “DOS”, no al archivo. (Presumiblemente, el dispositivo “DOS” en realidad no terminaría eliminado, porque si eso fuera algo que pudiera hacerse por accidente, estoy bastante seguro de que le habría pasado a alguien que participa aquí o en superusuario.com/questions/282194/… …)

    – SamB

    18 de junio de 2017 a las 15:49

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad