batch file。 删除目录中的所有文件和文件夹
我想要一个batch file,将删除我的无线工具箱的caching文件夹中的所有文件夹和文件。
目前我有以下几点:
cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" del *.db
这将删除我的RMS目录中的所有.db文件,但是我想从这个目录中删除所有的东西
你能帮我吗? 谢谢。
del *.*
而不是del *.db
。 这将删除一切。
创build一个batch file
将以下文本复制到batch file
set folder="C:\test" cd /d %folder% for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
将删除所有文件和文件夹
IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" ( rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q )
这将删除文件夹(和文件夹本身)的所有内容。
只要把这个从morty346贴出来:
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) )
添加一个快速检查variables中定义的文件夹是否存在,然后将目录更改为该文件夹并删除内容。
del *.*
只会删除文件,而不能删除子目录。 要核实一个目录的内容,你可以使用这个脚本:
@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
你可以使用del
和/S
标志(告诉它recursion所有子目录中的所有文件):
del /SC:\Path\to\directory\*
RD命令也可以使用。 recursion地在没有提示的情况下悄悄地删除
@RD /S /Q %VAR_PATH%
试试这个,它适用于我,我有一个应用程序转储数据在我的“C:\ tmp”文件夹下面的作品最适合我,它甚至不要求是或否删除数据,我已经每5分钟后运行一次
cd "C:\tmp" del *.* /Q
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 )
更好的是,假设我想删除c:\ windows \ temp文件夹下的所有东西。
@echo off rd c:\windows\temp /s /q
您可以使用robocopy将空文件夹镜像到您正在清除的文件夹中。
robocopy "C:\temp\empty" "C:\temp\target" /E /MIR
如果您不能删除或重新创build实际的文件夹,它也可以。
它确实需要一个现有的空目录。
只是一个修改版本的https://stackoverflow.com/users/478183/morty346答案;
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 /ad 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
使用
set dir="Your Folder Path Here" rmdir /s %dir% mkdir %dir%
这个版本删除没有问:
set dir="Your Folder Here" rmdir /s /q %dir% mkdir %dir%
例:
set dir="C:\foo1\foo\foo\foo3" rmdir /s /q %dir% mkdir %dir%
这将清除C:\foo1\foo\foo\foo3
。
我想提及@Abdullah Sabouin这个回答https://stackoverflow.com/a/44578851/8238944 。 关于我抄袭他,混淆了一下。 我没有注意到他的post。
我想感谢@melpomene指出错误!
你不能用rmdir
或del
单独删除所有的东西:
-
rmdir /s /q
不接受通配符参数。 所以rmdir /s /q *
会报错。 -
del /s /f /q
会删除所有文件,但空的子目录将保留。
我的首选解决scheme(正如我在许多其他batch file中所使用的)是:
rmdir /s /q . 2>NUL
@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\
你在正确的轨道上只是添加一个代码来添加删除的文件夹再次