目标:在多步清理结束时删除空文件夹。不带“Force”的 rd 删除非空目录。
这有效:
for /f "usebackq" %%d in (`"dir O:\Folder~1\Folder /ad/b/s | sort /R"`) do rd "%%d"
Run Code Online (Sandbox Code Playgroud)
这些不起作用:
for /f "usebackq" %%d in (`"dir \"O:\Folder With Spaces\Folder\" /ad/b/s | sort /R"`) do rd "%%d"
for /f "usebackq" %%d in (`"dir ""O:\Folder With Spaces\Folder"" /ad/b/s | sort /R"`) do rd "%%d"
for /f "usebackq" %%d in (`"dir ^"O:\Folder With Spaces\Folder^" /ad/b/s | sort /R"`) do rd "%%d"
Run Code Online (Sandbox Code Playgroud)
我知道我错过了一些简单的东西......
编辑
将下面的示例添加到混合中:

如果我真的回显 %d 它会回显.... "O:\Patient"。不是全名。
小智 3
您不需要带(外部)双引号usebackq。
您可以从管道命令中获取目录列表,但是当输出包含空格时,只有第一部分会传递给变量%%d。为了避免这种情况,请使用附加tokens=*参数(来自for /?):
for /f "usebackq tokens=*" %%d in (`dir "C:\Program Files" /ad /b /s ^| sort /R`) do echo "%%d"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29955 次 |
| 最近记录: |