write simple script make how create commands batch bat batch-file batch-processing

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. Entonces rmdir /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%

https://technet.microsoft.com/en-gb/library/bb490990.aspx


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 )