遍历指定目录中的所有文件和文件夹并将其删除

时间:2016-10-06 15:05:52

标签: batch-file cmd

我试图遍历指定目录的所有文件和文件夹,然后删除它们。我之前没有使用批处理脚本的经验,而且我做了很多在线研究,但是我无法弄清楚为什么以下不起作用:

@echo off
CLS
mode con: cols=160 lines=60
echo.
::****************************************************************
Set      Location[0]=\lib\Debug
Set      Location[1]=\temp\
::****************************************************************

:BEGIN
echo start

for /F "tokens=2 delims==" %%s in ('set Location[') do (
    for /r %%i in (%%s) do echo %%i
)


echo end
pause

最终发生的事情是列出批处理脚本当前目录中的所有文件。

如何使此脚本循环遍历Location变量中指定的所有目录,然后删除它在那里找到的所有文件和文件夹。清洁石板。

3 个答案:

答案 0 :(得分:1)

这基本上是删除基础文件夹并重新创建。

current = os.getcwd()
os.chdir('Deployment/Work/test1/src')
...
os.chdir(current)
os.chdir('Deployment/Work/test2/src')

所以这是我运行批处理文件之前的目录结构列表。

setColumnWidth()

现在我运行批处理文件并再次执行目录列表。你可以看到它删除了临时和调试的所有内容,但保留了其他所有内容。

 @echo off

 Set Location[0]=lib\Debug
 Set Location[1]=temp

 for /F "tokens=2 delims==" %%H in ('set Location[') do (
    rmdir /Q /S "%%H"
    md "%%H"
 )

答案 1 :(得分:0)

看看这是否对您有所帮助:

@Echo Off
Set "Location[0]=C:\temp\lib\Debug"
Set "Location[1]=C:\temp\temp"

For /F "Tokens=1* Delims==" %%A In ('Set Location[') Do (
    For /R "%%B" %%C In (*.*) Do Echo=%%C)

pause

答案 2 :(得分:0)

如果要对要删除的文件夹进行硬编码,可以这样做:

@echo off & setlocal
set todelete="lib\debug" "temp" "something else" "and this\folder\here"
call :dodelete %todelete%
goto :eof

:dodelete
if "%~1"=="" goto :eof
rd /s "%~dp0%~1"
md "%~dp0%~1"
shift
goto :dodelete