batch-file - script - how to write a simple batch bat file
Archivo por lotes. Eliminar todos los archivos y carpetas en un directorio (15)
Quiero tener un archivo por lotes que elimine todas las carpetas y archivos en mi carpeta Cache para mi kit de herramientas inalámbrico.
Actualmente tengo lo siguiente:
cd "C:/Users/tbrollo/j2mewtk/2.5.2/appdb/RMS"
del *.db
Esto eliminará todos los archivos .db en mi directorio RMS; sin embargo, quiero eliminar cada cosa de este directorio.
¿Me puede ayudar? Gracias.
Crear un archivo por lotes
copiar debajo del texto en el archivo por lotes
set folder="C:/test"
cd /d %folder%
for /F "delims=" %%i in (''dir /b'') do (rmdir "%%i" /s/q || del "%%i" /s/q)
Eliminará todos los archivos Y carpetas
Debe ejecutar este comando para eliminar todos los archivos del *. *
Mejor aún, supongamos que quiero eliminar todo lo que se encuentra en la carpeta c: / windows / temp.
@echo off
rd c:/windows/temp /s /q
No puede eliminar todo con rmdir
o del
solo:
-
rmdir /s /q
no acepta params de comodines. Entoncesrmdir /s /q *
será un error. -
del /s /f /q
eliminará todos los archivos, pero los subdirectorios vacíos permanecerán.
Mi solución preferida (como he usado en muchos otros archivos por lotes) es:
rmdir /s /q . 2>NUL
Prueba esto, funciona para mí, tengo una aplicación que descarga datos en mi carpeta "C: / tmp" y el siguiente funciona mejor para mí, ni siquiera me piden sí o no para eliminar los datos, lo he hecho un cronograma para que se ejecute cada 5 minutos
cd "C:/tmp"
del *.* /Q
Puede hacer esto usando del
y el indicador /S
(para decirle que recurse todos los archivos de todos los subdirectorios):
del /S C:/Path/to/directory/*
El comando RD también se puede usar. Recursivamente eliminar silenciosamente sin aviso
@RD /S /Q %VAR_PATH%
Puede usar robocopy para duplicar una carpeta vacía en la carpeta que está borrando.
robocopy "C:/temp/empty" "C:/temp/target" /E /MIR
También funciona si no puede eliminar o volver a crear la carpeta real.
Requiere un directorio vacío existente.
Solo junten esto de lo que morty346 publicó:
set folder="C:/test"
IF EXIST "%folder%" (
cd /d %folder%
for /F "delims=" %%i in (''dir /b'') do (rmdir "%%i" /s/q || del "%%i" /s/q)
)
Agrega una comprobación rápida de que la carpeta definida en la variable existe primero, luego cambia el directorio a la carpeta y elimina el contenido.
Solo una versión modificada de morty346 respuesta
set folder="C:/test"
cd /D %folder%
if NOT %errorlevel% == 0 (exit /b 1)
echo entire content of %cd% will be deleted, press Ctrl-C to abort
pause
REM first the directories /ad option of dir
for /F "delims=" %%i in (''dir /b /ad'') do (echo rmdir "%%i" /s/q)
REM now the files /a-d option of dir
for /F "delims=" %%i in (''dir /b /a-d'') do (echo del "%%i" /q)
REM to deactivate simulation mode remove the word echo before rmdir and del
Utilizar
set dir="Your Folder Path Here"
rmdir /s %dir%
mkdir %dir%
Esta versión se elimina sin preguntar:
set dir="Your Folder Here"
rmdir /s /q %dir%
mkdir %dir%
Ejemplo:
set dir="C:/foo1/foo/foo/foo3"
rmdir /s /q %dir%
mkdir %dir%
Esto borrará C:/foo1/foo/foo/foo3
.
Me gustaría mencionar a @ Abdullah Sabouin con esta respuesta https://.com/a/44578851/8238944 . Hubo una confusión sobre que yo lo copiara. No me di cuenta de su publicación.
Me gustaría agradecer a @melpomene por señalar errores.
del *.*
lugar de del *.db
. Eso eliminará todo.
del *.*
solo eliminará archivos, pero no subdirectorios. Para activar el contenido de un directorio, puede usar este script:
@echo off
setlocal enableextensions
if {%1}=={} goto :HELP
if {%1}=={/?} goto :HELP
goto :START
:HELP
echo Usage: %~n0 directory-name
echo.
echo Empties the contents of the specified directory,
echo WITHOUT CONFIRMATION. USE EXTREME CAUTION!
goto :DONE
:START
pushd %1 || goto :DONE
rd /q /s . 2> NUL
popd
:DONE
endlocal
@echo off
@color 0A
echo Deleting logs
rmdir /S/Q c:/log/
ping 1.1.1.1 -n 5 -w 1000 > nul
echo adding log folder back
md c:/log/
Estaba en el camino correcto, simplemente agregue un código para agregar la carpeta que se borra de nuevo
IF EXIST "C:/Users/tbrollo/j2mewtk/2.5.2/appdb/RMS" (
rmdir "C:/Users/tbrollo/j2mewtk/2.5.2/appdb/RMS" /s /q
)
Esto eliminará todo de la carpeta (y la carpeta misma).
set "DIR_TO_DELETE=your_path_to_the_folder"
IF EXIST %DIR_TO_DELETE% (
FOR /D %%p IN ("%DIR_TO_DELETE%/*.*") DO rmdir "%%p" /S /Q
del %DIR_TO_DELETE%/*.* /F /Q
)