删除文件夹中没有名称XYZ的文件

时间:2016-03-15 17:11:30

标签: windows batch-file

我有一个文件夹C:\ remote,它有两个文件夹,每个A和B,每个文件夹中包含多个文件夹xyc,dsx,axyz等,我想删除没有名称xyz的子文件夹。< / p>

Ant帮助很棒

set folder="C:\Users\rmakkena\AppData\Roaming\TabMigrate\10.212.38.15\TBM\workbooks" 
cd /d %folder% 
for /F "delims=" %%i in ('migrate') do (rmdir "%%i" /s/q || del "%%i" /s/q) 

4 个答案:

答案 0 :(得分:0)

试试这个......

@echo off
set PROCESS_DIR=C:\Users\plamb\Desktop\tmp
set TO_RETAIN=xyz

for /d %%d in (%PROCESS_DIR%\*) do (
    echo Processing directory: %%d
    for /d %%f in (%%d\*) do (
        if not "%%f" == "%%d\%TO_RETAIN%" (
            echo Deleting sub-directory: %%f
            rd %%f /s /q
        )

        if "%%f" == "%%d\%TO_RETAIN%" (
            echo Retaining sub-directory: %%f
        )
    )
)
set PROCESS_DIR=
set TO_RETAIN=
@echo on

这将查找当前目录中的目录,然后检查这些目录的直接子目录并删除任何不称为xyz的子文件夹(区分大小写)。

在C:\ remote目录中运行它。它将删除您希望在该级别下面的目录。将xyz更改为您想要的任何内容。

答案 1 :(得分:0)

这里是下面没有工作的代码,它运行但没有做任何事情

@echo off 设置PROCESS_DIR = C:\ Users \ rmakkena \ AppData \ Roaming \ TabMigrate \ 10.212.38.15 \ TBM \ workbooks 设置TO_RETAIN = migrate

for / d %% d in(%PROCESS_DIR%*)do(     echo处理目录:%% d     for / d %% f in(%% d *)do(         如果不是“%% f”==“%% d \%TO_RETAIN%”(             echo删除子目录:%% f             rd %% f / s / q         )

    if "%%f" == "%%d\%TO_RETAIN%" (
        echo Retaining sub-directory: %%f
    )
)

) 设置PROCESS_DIR = 设置TO_RETAIN =

答案 2 :(得分:0)

下面的代码有效,但它会删除所有内容

set folder =“C:\ Users \ rmakkena \ AppData \ Roaming \ TabMigrate \ 10.212.38.15 \ TBM \ workbooks” cd / d%文件夹% for / F“delims =”%% i in('dir / b')do(rmdir“%% i”/ s / q || del“%% i”/ s / q)

答案 3 :(得分:0)

以下代码保留名称的任何部分中具有%retain%的文件夹:

@echo off
setlocal EnableDelayedExpansion

set "retain=migrate"
set folder="C:\Users\rmakkena\AppData\Roaming\TabMigrate\10.212.38.15\TBM\workbooks" 
cd /d %folder% 
for /D %%i in (*) do (
   set "folder=%%i"
   if "!folder:%retain%=!" equ "%%i" rmdir "%%i" /s/q
)

这个只保留名为%retain%的那个:

@echo off
setlocal

set "retain=migrate"
set folder="C:\Users\rmakkena\AppData\Roaming\TabMigrate\10.212.38.15\TBM\workbooks" 
cd /d %folder% 
for /D %%i in (*) do (
   if /I "%%i" neq "%retain%" rmdir "%%i" /s/q
)