(批处理)遍历文件夹并删除所有但命名的[重复]

问题描述 投票:0回答:1

我正在尝试遍历我拥有的数千个文件夹,并删除特定目录中没有指定名称的所有文件夹。这是我到目前为止所做的。

@ECHO OFF
SETLOCAL
SET "sourcedir=C:\testing\%%a\all\base\"
SET "keepfile=test.bat"
SET "keepdir=keepthisfolder"

FOR /d %%a IN ("%sourcedir%\*") DO IF /i NOT "%%~nxa"=="%keepdir%" RD /S /Q "%%a"
FOR %%a IN ("%sourcedir%\*") DO IF /i NOT "%%~nxa"=="%keepfile%" DEL "%%a"

GOTO :EOF

我已经尝试了数十种遍历数组的组合,但只有在我给它一个确切的名称时才有效。它以这种方式满足我的需要,但这意味着要逐一进行。

batch-file delete-file
1个回答
0
投票

根据我的评论,如果

%%a
中的
C:\testing\%%a\all\base\
部分未知,我建议您将脚本更改为:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "sourcedir=C:\testing"
Set "keepfile=test.bat"
Set "keepdir=keepthisfolder"

For /D %%G In ("%sourcedir%\*") Do (
    For /D %%H In ("%%~fG\all\base\*") Do If /I Not "%%~nxH" == "%keepdir%" RD /S /Q "%%H"
    For %%I In ("%%~fG\all\base\*") Do If /I Not "%%~nxI" == "%keepfile%" Del /F "%%I"
)

GoTo :EOF
© www.soinside.com 2019 - 2024. All rights reserved.