Obtuve algunas carpetas creadas por malware cuyo nombre terminaba con un punto como C:\a.\
o C:\b.\
, etc.
Encontré una solución que puede eliminar dicha carpeta con el comando, rd /q /s "C:\a.\"
pero si llamo a Win API RemoveDirectory
, regresa ERROR_FILE_NOT_FOUND
.
Y me pregunto cómo escribir una función para eliminar ese directorio, gracias
Pruebo en mi propio sistema Windows XP SP3 como este
creo una carpeta C:\>mkdir a..\\\
y no puedo hacer doble clic para acceder a esta carpeta. y puedo eliminar con comando rd /q /s "C:\a.\"
¿A qué API (s) del sistema Windows rd /q /s
llama ese comando?
Respuestas:
Aquí tienes una solución a este problema :
rd /s "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder."
fuente
rd
.CMD.exe
en modo administrador si no funciona en el símbolo del sistema no elevadoSolución: cuando llame a RemoveDirectory, asegúrese de anteponer la ruta con la cadena "
\\?\
".Explicación: Tiene mucho que ver con el punto. Según MSDN, hay ciertos casos en los que es posible que no pueda eliminar un archivo o carpeta en un volumen NTFS, específicamente cuando el nombre del archivo no es válido en el espacio de nombres de Win32 (razón por la cual no puede abrir el archivo con el métodos normales en el Explorador de Windows).
(Fuente: http://support.microsoft.com/?kbid=320081 )
fuente
rd "\\?\C:\Users\ahmed\Desktop\buggy."
rd
en pwsh hay un aliasremove-item
que no admite `\\? \`.{IncrementalNumber}.
), y estaba muy confundido acerca de por qué fallaban mis scripts de procesamiento de datos. Esto ahora tiene sentido, pero parece que el comportamiento es tan inesperado que podría tener ramificaciones de seguridad debido a que las aplicaciones manejan incorrectamente los nombres de archivo que terminan en un espacio o punto.He publicado esto en SU y decidí publicarlo aquí también. Es la forma más sencilla, rápida y sencilla de conseguirlo. Ahora me río de lo simple que es.
Yo mismo tenía instalado WinRaR, así que decidí demostrar la solución.
Esta solución alternativa también es posible utilizando 7zip.
Otra cosa que debo mencionar es que, como parece que el problema se debe al uso del explorador de Windows y cualquier otro explorador de archivos (como el explorador de archivos winrar, exploradores de ftp, etc.) tratará estos archivos de forma normal.
¡Puede intentar usar cualquier navegador de archivos y simplemente eliminar esos archivos y no molestarse en archivarlos! ¡Salud!
fuente
Cuando vea que el nombre es "a.", Pero el nombre real es "a .."
Prueba esto:
rd /q /s "C:\a..\"
Y puede intentar explorar la carpeta con este código:
for /f "tokens=3 delims=<>" %%a in ('dir /ad /x "C:\*" ^| findstr " a\.\.$"') do ( for /f "tokens=1" %%b in ("%%a") do start "" "%%~fb" )
fuente
Si tiene instalado git (puede obtenerlo desde aquí ), entonces es tan simple como:
rm -rf Foldername./
fuente
rm: cannot remove ‘.bin’: Directory not empty
-rf
parte debe encargarse del contenido de la carpeta.Usé " WinRar " Un simple procesador ZIP, RAR. Puede utilizar cualquier tipo de editor de nombre de archivo. Simplemente abra el directorio donde está su archivo en WinRar y seleccione cambiar el nombre después de hacer clic con el botón derecho en el archivo / carpeta que desea cambiar el nombre y complete el nuevo nombre.
fuente
Intente utilizar el programa de desbloqueo para eliminar archivos y carpetas que no puede eliminar normalmente.
fuente
Use el comando bash rm de Ubuntu en Windows 10
fuente
rm: cannot remove ‘.bin’: Directory not empty
si desea mantener los archivos, también hay opciones en bash.
necesitará el paquete Subsistema de Windows para Linux (tengo Ubuntu instalado)
para guardar los archivos. abra un símbolo del sistema y vaya al lugar donde se encuentra el archivo o carpeta.
ahora escribe "
bash
"esto abrirá bash en el indicador. ahora ingrese
mv '[folder or file you want to move]' '[new name (can include path)]'
(hay más en mv, así que si desea leer todas sus opciones, use 'man mv', esto abrirá su página de manual (luego use q para regresar a bash))el comando mv es la abreviatura de move, pero es tiene la función secundaria de cambiar el nombre de las cosas.
también en bash use 'comillas simples' y no una "comilla doble" normal, ya que bash espera 'comillas simples'.
aquí hay un ejemplo. suponga que su carpeta se llama "
data 1.
" ubicada enc:\users
(por lo que la ruta completa a la carpeta de error esc:\users\data 1.
1. abra el símbolo del sistema usando cualquier método
2. ingrese
cd c:\users
3. ahora escriba
bash
esto carga bash en la carpeta en la que estaba anteriormente4. finalmente escriba
mv 'data 1.' 'data 1'
5. ahora se puede acceder a la carpeta y puede optar por eliminarla.
fuente