使用批处理(bat cmd)删除电脑中所有的空文件
随着电脑使用得越来越久,电脑中文件,文件夹越来越多.特别是是空文件夹,藏得非常深,既不美观,也影响使用.因此,萌生了使用批处理来删除的想法.但是,网络的的方法都是有缺陷的,效果不完美.
例如下面这段程序:
@echo off
dir d: /ad /b /s |sort /r >&
for /f %%i in () do rd %%i
echo y |del& 
这段程序会产生一些问题,那就是假如一个文件夹名中包含了空格,那么这段程序就不能正确地删除它.而且,达不到要删除电脑中所有的空文件的目的,此处只能查D盘.假如电脑中有4个盘符,分别是CDEF,2个移动盘符GH.那么那么只能做如下修改:
@echo off
dir c: /ad /b /s |sort /r >&
dir d: /ad /b /s |sort /r >&
dir e: /ad /b /s |sort /r >&
dir f: /ad /b /s |sort /r >&
dir g: /ad /b /s |sort /r >&
dir h: /ad /b /s |sort /r >&
for /f %%i in () do rd %%i
echo y |del& 
那么,代码的重用率和容错率不高,容易出错,假如电脑中的盘符不是这些呢?就达不到效果.
替代的方法是用一条语句查出电脑中的盘符,那么以上语句可以改成:
@echo off
for /f "skip=1 delims=" %%a in ('Wmic Logicaldisk Where "DriveType=2 or DriveType=3" get name') do dir %%a /ad /b /s|sort /r>&
for /f %%i in () do rd %%i
echo y |del& 
这段代码还是不能解决关于文件夹命名中有空格的问题,通过我多方查资料,在路径两端夹银行可解决.例如rd d:\132 45运行不能成功,rd “d:\132 45”才行.
因此,可以将上述代码改为:
@echo off
for /f "skip=1 delims=" %%a in ('Wmic Logicaldisk Where "DriveType=2 or DriveType=3" Get Name') do dir %%a /ad /b /s|sort /r>&
for /f "delims=" %%i in () do echo "%%i">&
for /f "delims=" %%i in () do rd %%i
echo y|
echo y|
完整的程序代码:
@echo off
echo 删除计算机中所有空文件夹......
echo 正在查当前计算机所有盘符.......
echo 查完成......
echo 正在查所有文件夹......
echo 查完成......
echo 正在将目录信息写入临时文件......
dir C:\ /ad /b /s |sort /r>&
echo 写入完成......
for /f "skip=1 delims=" %%a in ('Wmic Logicaldisk Where "DriveType=2 or DriveType=3" Get Name') do dir %%a /ad /b /s|sort /r>&
echo 正在准备转换临时文件......
for /f "delims=" %%i in () do echo "%%i">&
echo 转换完成......
echo 删除空文件开始......
批处理文件怎么做echo 请稍侯......
for /f "delims=" %%i in () do rd %%i
cls
echo 删除空文件完成......
echo 正在准备删除临时文件......
echo y|
echo 删除临时文件完成......
echo 正在准备删除转换文件......
echo y|
echo 删除转换文件完成......
echo 所有工作完成......
pause
可能有些朋友不知道怎么建立批处理文件.其实很简单,先建立一个文本文档,将代码复制进去,另存为任意文件名.bat即可.然后双击运行.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。