批处理递归删除SoftView Cache目录失败,求修正方案
解决批处理递归删除带空格目录时「系统找不到指定文件」的问题
你的问题根源在于变量赋值时的引号处理错误:当你给filename赋值时直接包裹了双引号,FOR命令解析%filename%时会把引号当成路径的一部分,导致实际搜索的是带引号的\"SoftView Cache\",而非目标目录SoftView Cache。
以下是两种可行的修正方案:
方案一:调整变量赋值与引用的引号位置
直接给变量存储不带引号的目录名,在FOR的IN参数中用引号包裹变量引用,让命令正确识别带空格的目录:
set filename=SoftView Cache FOR /d /r "E:\Users\info\OneDrive - Les Entreprises Renouveau\Shared\Image\Plans" %%d IN ("%filename%") DO rd /s /q "%%d" pause
方案二:使用延迟扩展更稳妥处理变量
如果你的脚本后续有复杂变量操作,推荐用这种方式,同时避免变量末尾意外保留空格:
setlocal enabledelayedexpansion set "filename=SoftView Cache" FOR /d /r "E:\Users\info\OneDrive - Les Entreprises Renouveau\Shared\Image\Plans" %%d IN ("!filename!") DO rd /s /q "%%d" endlocal pause
两种方案都能让FOR命令正确定位到所有名为SoftView Cache的目录,执行rd /s /q即可递归删除这些目录(/s删除目录及子内容,/q静默执行无确认提示)。
内容的提问来源于stack exchange,提问作者wesp
相关产品推荐
相关产品推荐

