我有一个文件夹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)
答案 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
)