![如何通过 bat 文件删除远程目录树?](https://linux22.com/image/1427277/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20bat%20%E6%96%87%E4%BB%B6%E5%88%A0%E9%99%A4%E8%BF%9C%E7%A8%8B%E7%9B%AE%E5%BD%95%E6%A0%91%EF%BC%9F.png)
我看到了这个问题“如何在 Windows 7 上通过控制台删除目录树?“想做同样的事情,但有以下例外:
- 该目录存在于外部驱动器上。
- 目录路径的字符串中有一个空格。
- 我绝对希望在批处理文件中使用它,而不是在命令行中。
所以对我来说,我正在处理:
del /s /f /q p:\group_share\my share\*.*
for /f %%f in ('dir /ad /b p:\group_share\my share\') do rd /s /q p:\group_share\my share\%f
显然我可以将其放在变量中:
set FULL_PATH="p:\group_share\my share\"
然后:
del /s /f /q %FULL_PATH%*.*
for /f %%f in ('dir /ad /b %FULL_PATH%') do rd /s /q %FULL_PATH%%f
我尝试在 %FULL_PATH% 周围添加引号:“%FULL_PATH”......但我得到了这个:
The system cannot find the file specified.
顺便说一下,如果我输入:p:\group_share\my share\ 并用引号括起来,第一行就会起作用:
del /s /f /q "p:\group_share\my share\"*.*
有人能给我一些建议或尝试吗?我尝试过各种引号排列、不使用引号等。谢谢 Geo
答案1
你似乎把它变得不必要地复杂化了——你所需要的只是:-
pushd %FULL_PATH%
rd /s /q .
popd
通过移动到目标目录,您可以防止my share
被删除。请注意cd
和pushd
不需要引号,因为它们只接受一个参数。