wscript script cscript windows cmd wsh

script - ¿"Rm-rf" equivalente para Windows?



wscript.exe windows 10 (17)

Aquí está lo que tú necesitas hacer...

Crea un archivo por lotes con la siguiente línea

RMDIR /S %1

Guarde su archivo por lotes como Remove.bat y póngalo en C:/windows

Crea la siguiente clave de registro

HKEY_CLASSES_ROOT/Directory/shell/Remove Directory (RMDIR)

Inicie regedit y actualice el valor predeterminado HKEY_CLASSES_ROOT/Directory/shell/Remove Directory (RMDIR)/default con el siguiente valor

"c:/windows/REMOVE.bat" "%1"

¡Eso es! Ahora puede hacer clic derecho en cualquier directorio y usar la función RMDIR

Necesito una forma de eliminar recursivamente una carpeta y sus hijos.

¿Hay una herramienta precompilada para esto, o necesito escribir una?

DEL /S no borra directorios.

DELTREE se eliminó de Windows 2000+


Esto eliminará "mi carpeta" y su contenido sin aviso:

rd /s /q "C:/Users/jerry.g/AppData/Roaming/my folder"


Esto es lo que funcionó para mí:

Solo intenta disminuir la longitud del camino. es decir: :: Cambie el nombre de todas las carpetas que llevan a dicho archivo a los nombres más pequeños posibles. Di los nombres de una letra. Ir renombrando hacia arriba en la jerarquía de carpetas. Por esto, efectivamente, reduce la longitud del camino. Ahora finalmente intente borrar el archivo de inmediato.


Para eliminar un directorio (ya sea que exista o no) use lo siguiente:

if exist myfolder ( rmdir /s/q myfolder )


Primero, rm -rf hace rm -rf :

C:/Users/ohnob/things>touch stuff.txt C:/Users/ohnob/things>rm -rf stuff.txt C:/Users/ohnob/things>mkdir stuff.txt C:/Users/ohnob/things>rm -rf stuff.txt C:/Users/ohnob/things>ls -l total 0 C:/Users/ohnob/things>rm -rf stuff.txt

Hay tres escenarios donde rm -rf se usa comúnmente donde se espera que devuelva 0 :

  1. La ruta especificada no existe.
  2. La ruta especificada existe y es un directorio.
  3. La ruta especificada existe y es un archivo.

Voy a ignorar todo lo relacionado con los permisos, pero de todos modos nadie usa los permisos ni trata de negarse el acceso de escritura a las cosas en Windows (está bien, eso es una broma ...).

Primero establezca ERRORLEVEL en 0 y luego elimine la ruta solo si existe, usando diferentes comandos dependiendo de si es un directorio o no. IF EXIST no establece ERRORLEVEL en 0 si la ruta no existe, por lo que primero es necesario establecer ERRORLEVEL en 0 para detectar correctamente el éxito de una manera que imite el uso normal de rm -rf . Proteger el RD con IF EXIST es necesario porque RD , a diferencia de rm -f , generará un error si el objetivo no existe.

El siguiente fragmento de script asume que DELPATH está precoteado. (Esto es seguro cuando haces algo como SET DELPATH=%1 Intenta colocar ECHO %1 en un .cmd y pasarle un argumento con espacios y ver qué sucede por ti mismo). Una vez que se completa el fragmento, puede comprobar si hay un error con IF ERRORLEVEL 1 .

: # Determine whether we need to invoke DEL or RD or do nothing. SET DELPATH_DELMETHOD=RD PUSHD %DELPATH% 2>NUL IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD) IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP : # Reset ERRORLEVEL so that the last command which : # otherwise set it does not cause us to falsely detect : # failure. CMD /C EXIT 0 IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH% IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH%

El punto es que todo es más simple cuando el entorno se ajusta a POSIX. O si instala un mínimo de MSYS y simplemente use eso.


Pruebe este comando:

del /s foldername


Puede instalar GnuWin32 y usar los comandos * nix de forma nativa en Windows. Instalo esto antes de instalar cualquier otra cosa en una copia nueva de Windows. :)


Puede instalar cygwin, que tiene rm así como ls etc.


RMDIR o RD si está utilizando el símbolo del sistema clásico (cmd.exe):

rd /s /q "path"

Si está usando PowerShell, puede usar Remove-Item (que tiene un alias para erase , erase , rd , ri , rm y rmdir ) y toma un argumento -Recurse que se puede acortar a -r

rd -r "path"


También hay deltree si está en una versión anterior de Windows.

Realmente me gusta este sitio para encontrar comandos: SS64: Del - Eliminar archivos


Utilizando Powershell 5.1

get-childitem *logs* -path ./ -directory -recurse | remove-item -confirm:$false -recurse -force

Reemplace los registros con el nombre del directorio que desea eliminar.

get-childitem busca el directorio de hijos con el nombre recursivamente de la ruta actual (.).

remove-item borra el resultado.


Ve a la ruta y activa este comando.

rd /s /q "FOLDER_NAME"

/ s: elimina el directorio especificado y todos los subdirectorios, incluidos los archivos. Utilice / s para eliminar un árbol.

/ q: ejecuta rmdir en modo silencioso. Borra directorios sin confirmación.

/? : Muestra ayuda en el símbolo del sistema.


administración:

takeown /r /f folder cacls folder /c /G "ADMINNAME":F /T rmdir /s folder

Funciona para cualquier cosa, incluyendo archivos sys

EDITAR: De hecho, encontré la mejor manera que también resuelve el problema de la ruta del archivo también:

mkdir /empty robocopy /mir /empty folder


del / s / q directorytobedeleted


rmdir / s dirname


RMDIR [/S] [/Q] [drive:]path

RD [/S] [/Q] [drive:]path

  • /S Elimina todos los directorios y archivos en el directorio especificado además del propio directorio. Se utiliza para eliminar un árbol de directorios.

  • /Q Modo silencioso, no pregunte si está bien para eliminar un árbol de directorios con /S


rmdir /S /Q %DIRNAME%