Yo uso Windows.
Quiero eliminar todos los archivos y carpetas de una carpeta mediante una llamada al sistema.
Puedo llamar así:
>rd /s /q c:\destination
>md c:\destination
¿Conoces una forma más fácil?
Yo uso Windows.
Quiero eliminar todos los archivos y carpetas de una carpeta mediante una llamada al sistema.
Puedo llamar así:
>rd /s /q c:\destination
>md c:\destination
¿Conoces una forma más fácil?
Respuestas:
No, no conozco ninguno.
Si desea conservar el directorio original por algún motivo (ACL, etc.) y, en cambio, realmente desea vaciarlo, puede hacer lo siguiente:
del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
Esto primero elimina todos los archivos del directorio y luego, de forma recursiva, elimina todos los directorios anidados, pero en general, mantiene el directorio de nivel superior tal como está (excepto por su contenido).
Tenga en cuenta que dentro de un archivo por lotes necesita duplicar el %
dentro del for
ciclo:
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
por la ruta, posiblemente usando comillas alrededor de todo si es necesario.
del c:\destination\*.* /s /q
trabajó para mi. Espero que eso también funcione para ti.
del *.*
del "../../server/front-end\*.*"
Creo que la forma más sencilla de hacerlo es:
rmdir /s /q "C:\FolderToNotToDelete\"
La última "\" en la ruta es la parte importante.
mkdir C:\FolderToNotToDelete
fue suficiente para mí :)
¡Si! Utilice Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Si los nombres de las subcarpetas pueden contener espacios, debe rodearlos entre comillas de escape. El siguiente ejemplo muestra esto para los comandos utilizados en un archivo por lotes.
set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
Para borrar un archivo:
del PATH_TO_FILE
Para eliminar la carpeta con todos los archivos en ella:
rmdir /s /q PATH_TO_FOLDER
Eliminar todos los archivos de una carpeta específica (no eliminar la carpeta en sí) es un poco complicado. del /s *.*
no puede eliminar carpetas, pero elimina archivos de todas las subcarpetas. Entonces se necesitan dos comandos:
del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"
Puede crear una secuencia de comandos para eliminar lo que desee (carpeta o archivo) de esta manera mydel.bat
:
@echo off
setlocal enableextensions
if "%~1"=="" (
echo Usage: %0 path
exit /b 1
)
:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1
:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%
Pocos ejemplos de uso:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Una opción sencilla de una línea es crear un directorio vacío en algún lugar de su sistema de archivos y luego usar ROBOCOPY
( http://technet.microsoft.com/en-us/library/cc733145.aspx ) con el /MIR
interruptor para eliminar todos los archivos y subcarpetas. De forma predeterminada, robocopy no copia la seguridad, por lo que las ACL en su carpeta raíz deben permanecer intactas.
También es probable que desee establecer un valor para el interruptor de reintento /r
, porque el número predeterminado de reintentos es 1 millón.
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
Tenía una carpeta de índice con 33 carpetas que necesitaban eliminar todos los archivos y subcarpetas. Abrí una línea de comando en la carpeta de índice y luego usé estos comandos:
for /d in (*) do rd /s /q "%a" & (
md "%a")
Los separé en dos líneas (presione enter después de la primera línea y, cuando se le solicite, agregue la segunda línea) porque si se ingresa en una sola línea, es posible que no funcione. Este comando borrará cada directorio y luego creará uno nuevo que está vacío, eliminando así todos los archivos y subcarpetas del directorio original.
Navega al directorio principal
Eliminar las subcarpetas
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
, debe usar popd
también. Desafortunadamente, popd
no funciona cuando borras el directorio. Entonces, tienes que hacer en cd
lugar de pushd
.
intente esto, esto buscará todo MyFolder en el directorio raíz y eliminará todas las carpetas llamadas MyFolder
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
del .\*
Este comando elimina todos los archivos y carpetas de la navegación actual en su línea de comando.