Windows批处理选择性删除

时间:2019-02-15 19:41:55

标签: batch-file

我想从特定位置删除所有名为Debug Release x86 x64的子目录,同时排除所有.git子目录。我可以在Linux(find -type d -name Debug -and -not .git -delete或类似的语言)中轻松地做到这一点。

我在这里做错了什么? FINDSTR与小写的debug release关键字应排除在外,我需要区分大小写。

FOR /R C:\code /D %%I IN (DIR /S /B Debug Release x86 x64 ^| FINDSTR /V \. ^| FINDSTR /V debug ^| FINDSTR /V release) DO ECHO %%I

2 个答案:

答案 0 :(得分:2)

使用以下代码:

@echo off
setlocal EnableDelayedExpansion

pushd "dir_with_subfolders"
for /F "delims=" %%A IN ('dir /S /B /AD "Debug Release x86 x64"') do (
    set "loc=%%~fA"
    if "!loc:\.git\=!" == "!loc!" (
        rd /s /q "%%~fA"
    )
)
popd
pause & exit /b

答案 1 :(得分:2)

似乎您只想递归地删除在特定路径中以debug开头的文件夹?:

@cd /d "C:\code"
@for /f "delims=" %%i in ('dir /b /s /ad "debug*"') do @echo @rmdir /S/Q "%%~fi"

对结果感到满意后,只需删除@echo。如果我误解了您的问题,请告诉我,但这就是Linux查找字符串所显示的内容。