我有一个包含多个子文件夹的文件夹。我想删除子文件夹/示例下的所有测试文件夹。如何使用Windows批处理脚本执行此操作?请注意,某些文件中没有测试文件夹。
我知道如何删除mainfolder / subfolder1 / example / test。但是我坚持在每个子文件夹下递归删除,即删除mainfolder / * / example / test。
TIA
E.g:
mainfolder
subfolder1
source
example
test
subfolder2
source
example
test
subfolderX
source
example
答案 0 :(得分:1)
我建议您查看ss64.com's CMD.EXE reference,特别是DIR
,FINDSTR
和FOR
命令。
for /f %i in ('dir /s /a:d /b ^| findstr /i /e "example\test"') do rmdir /s %i
似乎是您所要求的适当命令。
关于DIR
的注释:/ S - 子目录,/ A:D - 仅限目录(“属性:目录”),/ B - “裸”,没有页眉或页脚,只是完整路径名。
关于FINDSTR
的注释:/ I - 不区分大小写,/ E - 在字符串结尾处匹配
详细的命令描述性摘要:创建目录列表,包括所有子目录,并仅选择以“example \ test”结尾的目录,然后删除每个目录,包括其中的所有文件和子目录。
答案 1 :(得分:1)
for /R "mainfolder" /D %%a in (example\te?t) do rd /S "%a"
此方法唯一不方便的是目标文件夹的名称必须作为通配符提供,因此您必须提供一个不包含任何其他不需要的文件夹的名称。如果名称没有使用通配符,则for
命令可能包含其他文件夹。
答案 2 :(得分:1)
您只需要遍历主目录,并检查是否存在要删除的目录:
for /D %%d in (mainfolder\*) do if exist "%%d\example\test" rd /s /q "%%d\example\test"
答案 3 :(得分:1)
"chrome_url_overrides" : {
"newtab": "my-new-tab.html"
}
从提示中直接 - 将每个for /r "c:\sourcedir" /d %a in (*) do if /i "%~nxa"=="test" echo rd /s /q "%a"
加倍以用作批处理行。
根据需要替换%
必需c:\sourcedir
只是rd
来显示他的脚本打算做什么。测试后删除echo
关键字以实际执行删除。