9 votos

¿Por qué este archivo, al parecer, no existe al intentar eliminarlo?

Un mes atrás, me desempaquetado la fuente de Linux en una carpeta en Cygwin (yo estaba curioso en cuanto a si es o no compila con MinGW 'la causa de mi otro equipo que ejecute Linux es un lento de un solo núcleo Sempron). He intentado borrar, pero hay 1 archivo a la izquierda, y no va a eliminar...

Cygwin reside en C:\cygwin, y la he desempaquetado la fuente en C:\cygwin\src\linux-3.7.1. No compilar... Así que he intentado borrar la carpeta. Iba bien, hasta que al final, cuando me di cuenta de que no todos los archivos son eliminados. He intentado borrar linux-3.7.1 carpeta de nuevo, y un error que apareció:

Item not found

Abrí la carpeta, y encontró que hay 1 archivo de origen izquierda: aux.c, que es en C:\cygwin\src\linux-3.7.1\drivers\gpu\drm\nouveau\core\subdev\i2c\aux.c.

Que no:

  • Eliminar
  • Abierto
  • Mover

Propiedades generales:

General

Las propiedades de seguridad:

Security

¿Cómo puedo eliminar este archivo?

14voto

Karan Puntos 37697

Intente esto de un (elevado) símbolo del sistema:

del \\?\C:\cygwin\src\linux-3.7.1\drivers\gpu\drm\nouveau\core\subdev\i2c\aux.c

13voto

Hennes Puntos 41345

El problema que se encontró es debido a la antigua de DOS reservas.

Archivos en la lista de abajo tenía un significado especial. Parte de que todavía está presente hoy en día en las versiones de windows:

CON, PRN, AUX, RELOJ DE DÓLARES, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 Por ejemplo, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, y LPT9.

La forma más fácil de eliminar de ellos es arrancar un sistema operativo que no tratar a estos nombres de archivo como especial. (por ejemplo, el inicio de windows no liveCD).

[editar] las Pruebas hechas en win7 x86 final:

La creación de un simple archivo de prueba:

S:\>copy con foo.c
prueba
^Z
 1 archivo(s) copiado.

Verificación de los contenidos:

S:\>tipo de foo.c
prueba

Ahora con aux.c

S:\>copy con aux.c
^Z
El sistema no puede encontrar el archivo especificado.
 0 archivo(s) copiado.

Parece partes de windows todavía es compatible.

6voto

ChathurawinD Puntos 11

En este caso era, obviamente, sobre el significado especial de aux heredado de DOS veces, como Hennes señaló correctamente. Sin embargo, para los lectores que se tropieza con esto en el futuro me gustaría añadir otro posible caso de que este comportamiento puede ser visto.

Que cuando un archivo se creó con un punto final. Hay más exóticos casos así. Pero filename.ext. sería un nombre de archivo y no podría normalmente se elimina desde el subsistema Win32. Aquí es donde el truco de Karan . S/él utiliza un nombre que antes de ser pasados a la capa de debajo del subsistema Win32 será cambiado desde su \\?\C:\... forma a los "nativos" (esta es también la forma de sistema de archivos de los controladores de filtro de ver) formulario \??\C:\.... Mientras que dependiendo de la versión de Windows, esto puede ser un llamado directorio de objetos (uso WinObj de Sysinternals/Microsoft a mirar en el administrador de objetos del espacio de nombres) o un enlace simbólico (que no debe confundirse con el mismo nombre de la entidad en NTFS desde Vista) a otro directorio de objetos tales como \DosDevices. El último es simplemente un nombre y describe la parte de el administrador de objetos del espacio de nombres visibles para los procesos de Win32 por defecto.

Ahora, żcómo es posible que un archivo se creó en el primer lugar? Hay varias posibilidades.

  1. un programa Win32 que emplea el \\?\X: prefijo para los nombres de ruta de acceso con el fin de ampliar la ruta disponible longitud de 260 caracteres a aproximadamente 32767 caracteres (véase la nota 1!) el fichero creado en el primer lugar, así burlar algunas de las limitaciones del subsistema Win32.
  2. un programa rooteado en otro subsistema. El ex subsistema POSIX (después de Interix ahora SUA), el subsistema OS/2 (desaparecido hace tiempo, pero solía existir en windows NT 3.51) o alguna capa que no es exactamente un subsistema en el Windows sentido (Cygwin, a mi conocimiento) creó el archivo o la carpeta.
  3. un sistema operativo diferente creado (en paralelo de arranque de Linux, por ejemplo).
  4. es un archivo en un recurso compartido de red ubicada en un no-Windows server.

Los dos últimos puntos también alusión a uno de los mencionados recursos: arranque de un no-Windows live CD y eliminar el archivo(s).

El problema puede en realidad en comparación con el caso donde un viejo que no son Unicode Win32 programa se enfrenta con los nombres de archivo de varias páginas de código. Muchas veces no será capaz de "encontrar" algunos de ellos, porque cada uno de los respectivos página de códigos ANSI sólo puede caber 256 caracteres, mientras que la codificación UTF-16 (no su subconjunto UCS-2, sin embargo), teóricamente, puede codificar una cantidad casi ilimitada de puntos de código (leer sobre el tema en más de unicode.org y Wikipedia).

Espero que esto ayude a entender los problemas de fondo un poco más. No quería editar esta larga respuesta a una de las otras respuestas, aunque sólo complementa. Las otras respuestas son perfectamente válidas, sin que esta.


Nota 1: la cantidad máxima de caracteres en la ruta de acceso no es absoluta, porque un camino que está cerca del máximo absoluto (32767 caracteres) podría ser ampliado por tanto el administrador de objetos y filtros del sistema de archivos o sistemas de archivos de sí mismos (por ejemplo, los puntos de análisis).

0voto

Dan Puntos 33

Tuve este problema y estaba muy frustrado, nada funcionó. Entonces, he usado un CD de Ubuntu Linux. Arranca desde el cd, fue a modo de demostración, donde se accede a los archivos problemáticos fueron y simplemente eliminado. Funciona como un sueño.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: