批处理命令删除具有特殊字符的特定名称的所有子文件夹

时间:2018-04-10 13:21:55

标签: batch-file cmd

我有一个目录:

D:\DATA\DATA2\Demo&_1\Demo\1\deployment
D:\DATA\DATA2\Demo&_1\Demo\2\deployment
D:\DATA\DATA2\Demo&_1\Demo\3\deployment

我正在运行以下批处理文件命令以删除Demo文件夹中存在的所有部署文件夹:

cd /d D:\DATA\DATA2\Demo&_1\Demo
FOR /d /r . %%d IN (deployment) DO @IF EXIST "%%d" rd /s /q "%%d"

当我在文件夹名称(Demo& _1)中有特殊字符时,上面的命令不起作用(不删除部署文件夹),当我没有特殊字符时,它正在工作(删除部署文件夹)。

例如如果我更改文件夹的名称" Demo& _1"到#34;演示1"如果有特殊字符,上面的批处理文件将正常工作但不起作用。

2 个答案:

答案 0 :(得分:1)

仅仅因为路径不在引号中,但无论如何都是一个更简单的解决方案而不必执行cd /d

for /D /R "D:\DATA\DATA2\Demo&_1\Demo" %%d IN (deployment) DO @IF EXIST "%%d" rd /s /q "%%d"

答案 1 :(得分:-2)

试试这个:

MySearchString

将变量echo设置为要搜索的字符或字符串,如果输出正常,则删除MySearchString命令。

您也可以仅为文件名指定@echo off & setlocal set "MySearchString=T" for /r %%a in (*) do for /f "delims=" %%i in ('echo("%%~na" ^| findstr /i "%MySearchString%"') do echo del "%%~fa"

{{1}}

我在这里找到了它: $replaceRoot