windows 递归删除名称中包含空格的目录

0md85ypi  于 2023-02-16  发布在  Windows
关注(0)|答案(2)|浏览(138)

我试图删除所有目录与名称SoftView Cache递归在某个位置与以下批处理文件:

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

这只会返回“The system cannot find the file specified.”(系统找不到指定的文件)。我可以在打开的命令行窗口中看到,它正在搜索\"SoftView Cache",而不是应该搜索的\SoftView Cache。我知道是目录名中的空格导致了这个问题。如何更正代码以查找并删除名为SoftView Cache的目录?

piwo6bdm

piwo6bdm1#

看起来Daemon-5处理了旧批处理命令的语法。
如果对PS等价物感兴趣,相信这个应该可以了......问候~
Get-ChildItem -Path "E:\Users\info\OneDrive - Les Entreprises Renouveau\Shared\Image\Plans" -Include "SoftView Cache" -Directory -Recurse -Force | Remove-Item -Recurse -Force

3qpi33ja

3qpi33ja2#

使用命令DIR按模式获取文件夹列表。
使用的选项:

/S - recursively;
/AD - only folders;
/B - full path output.

使用命令FIND来避免包含前导空格的文件夹。选项**/I忽略大小写。
使用命令
FOR /F解析输出,并将文件夹路径作为参数发送到命令RD**
批处理文件代码:

SET "filename=SoftView Cache"
FOR /F "DELIMS=*" %%d in ('DIR /S /B /AD "E:\blablabla\*%filename%" ^|FIND/i"\%filename%"') DO RD /S /Q "%%d"

相关问题