标题: [文件操作] 批处理如何无视空格目录? [打印本页]
作者: Finera 时间: 2012-8-2 14:27 标题: 批处理如何无视空格目录?
- @echo off
- SET Kill=
- SET /P Kill= 输入要执行操作的位置(直接按回车则在当前位置执行):
- if "%Kill%"==" " SET Kill=%CD%
- dir %kill% /ad /b /s |sort /r >>c:kill.txt
- For /f %%i in (c:kill.txt) DO rd %%i
- echo y |del c:kill.txt
- @echo 清理%kill%完成
- @pause
复制代码
这段是网上收集改写的一个简单的清理空目录的批处理,现在问题是,通过管道将索引列表塞进了c:kill.txt中,却无法判断哪些目录中有空格也无法给该行索引前后加引号……求高手支招……
作者: apang 时间: 2012-8-2 18:23
路过,不是高手- @echo off
- set/p Kill=输入要执行操作的位置(直接按回车则在当前位置执行):
- if "%Kill%"=="" set "Kill=%~dp0"
- For /f "delims=" %%i in ('dir /ad /b /s "%Kill%"^|sort /r') DO (
- rd "%%i" 2>nul && echo 已删除"%%i"
- )
- echo 清理"%Kill%"完成&pause
复制代码
作者: 冷玉公子 时间: 2012-8-2 22:46
dir /b /s /ad 没错
不过要避免空格最好的方法是在For里面用 %%~S 扩充到一个短路径- @Echo Off
- For /F "tokens=*" %%A In ('dir /s /b /ad c:\*') Do (
- Rd %%~SA || Echo 删除空目录 %%A 成功
- )
- Pause
复制代码
作者: Finera 时间: 2012-8-15 13:06
谢谢~学习了~还有tokens和delims这种玩法~
作者: ht河豚 时间: 2012-8-18 19:55
随手写的,看行不- @echo off
- SET Kill=
- SET /P Kill= 输入要执行操作的位置(直接按回车则在当前位置执行):
- if "%Kill%"==" " SET Kill=%CD%
- dir %kill% /ad /b /s |sort /r >>c:\kill.txt
- for /f "tokens=* delims= " %%i in (c:\kill.txt) do (
- echo "%%i">>c:\kill2.txt
- )
- move c:\kill2.txt c:\kill.txt
- For /f %%i in (c:\kill.txt) DO rd %%i
- echo y |del c:\kill.txt
- @echo 清理%kill%完成
- @pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |