我有一个目录:
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"如果有特殊字符,上面的批处理文件将正常工作但不起作用。
答案 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