|
|
楼主 |
发表于 2015-3-31 13:35:18
|
显示全部楼层
本帖最后由 ygqiang 于 2015-3-31 13:42 编辑
- @echo off
- echo 本地磁盘:
- for %%a in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
- fsutil fsinfo drivetype %%a: | find "固定">nul && (
- for /f "tokens=*" %%i in ('dir /s/b/ad "%%a:\*隐藏-全*"') do (
- rd /s/q "%%~si"
- )
- )
- )
复制代码 for /f "tokens=*" %%i in
rd /s/q "%%~si"
for /f "delims=" %%b in
rd /s /q "%%b"
这2个差别主要是:
上面那句可以把引号去掉。如果有引号,两句都可以,如果没有引号,当路径中有空格时,下面那句就会引发错误。
它表示将路径以短路径的方式显示。这在DOS时代为了快速查找目标,将所有的文件(夹)名固定在8个字符以内,超过8个字符的,会以"前6个字符+~%d"的形式显示。
"%%~si"这句等同于%%~si
但"%%b"不等于%%b
保险起见,最好还是用%%~si。因为系统的差别,%%b所返回的路径字符串中可能包含有"号,如果遇到这种情况,那用"%%b"反而会出错了。
当对for的变量进行扩展的时候%%~i会强制将字符串中的引号脱掉。再配合其它属性引用,就能确保你的路径字符串始终是一个合法值。 |
|