[使用递归的方法删除指定路径,下面包括此文件夹的指定文件夹和文件]

发布于:2025-07-03 ⋅ 阅读:(22) ⋅ 点赞:(0)

递归删除 cmake-build-debug、.idea 文件夹和 CMakeLists.txt 文件


@echo off
setlocal DisableDelayedExpansion

echo 开始递归删除 cmake-build-debug、.idea 文件夹和 CMakeLists.txt 文件...

:: 获取脚本所在目录
set "script_dir=%~dp0"
set "script_dir=%script_dir:~0,-1%"
echo 当前处理目录: %script_dir%

call :DeleteItems "%script_dir%"

echo 操作完成!
pause
exit /b

:: 函数:递归删除目标文件夹和文件
:DeleteItems
    set "current_dir=%~1"

    echo 正在处理目录: %current_dir%

    pushd "%current_dir%" >nul 2>&1
    if errorlevel 1 (
        echo 错误:无法进入目录 %current_dir%
        exit /b 1
    )

    :: 删除 cmake-build-debug 文件夹
    if exist "cmake-build-debug" (
        echo 删除文件夹: cmake-build-debug
        rmdir /S /Q "cmake-build-debug"
        if errorlevel 1 (
            echo ? 删除失败: cmake-build-debug
        ) else (
            echo ? 已删除: cmake-build-debug
        )
    )

    :: 删除 .idea 文件夹
    if exist ".idea" (
        echo 删除文件夹: .idea
        rmdir /S /Q ".idea"
        if errorlevel 1 (
            echo ? 删除失败: .idea
        ) else (
            echo ? 已删除: .idea
        )
    )

    :: 删除 CMakeLists.txt 文件
    if exist "CMakeLists.txt" (
        echo 删除文件: CMakeLists.txt
        del /F /Q "CMakeLists.txt"
        if errorlevel 1 (
            echo ? 删除失败: CMakeLists.txt
        ) else (
            echo ? 已删除: CMakeLists.txt
        )
    )

    :: 遍历子目录并递归调用
    for /D %%d in (*) do (
        set "subdir=%%d"
        setlocal EnableDelayedExpansion
        if /i not "!subdir!"=="cmake-build-debug" ^
           if /i not "!subdir!"=="." ^
           if /i not "!subdir!"==".." (
            call :DeleteItems "%current_dir%\!subdir!"
        )
        endlocal
    )

    popd
goto :eof


网站公告

今日签到

点亮在社区的每一天
去签到