批处理文件(.bat)怎么实现读取文件目录

来源:百度知道 编辑:UC知道 时间:2024/05/09 09:43:23
我做一个bat文件来删除CC文件夹下所有的文件和文件夹
@echo off
del /q /s E:\CC
rmdir /q /s E:\CC
因为rmdir会把CC文件夹也删了
所以我想做个递归或者循环,先读取CC文件夹下的所有文件夹名,然后把这些文件夹给删了,怎么做??

(不要提示我用deltree那是外部命令,不要提示我可以之后在mk E:\CC)

dir /ad /b /s E:\CC
可得所有文件夹名。

dir /ad /b /s E:\CC > directory_list.bat
可以把文件夹名(含路径)存入文件 directory_list.bat

然后再处理。(例如,加入一列 rmdir 到 directory_list.bat 中,再执行 directory_list.bat)。

先删了E:\CC 再 mkdir CC 最方便,为什么要舍近求远呢?

@echo off
e: & cd cc
for /r %%x in (.) do del /q %%x
for /r %%x in (.) do rd %%x>nul

用以上几条批处理命令就可以了!

怎么样,精简有力吧!
注意一点,rd实际上也在删除当前目录,但由于正处于此目录中,是无法删除当前目录的,因而保留了当前目录!
实际上RD命令升级了,
可以直接用:
e: & cd cc
rd /s /q .>nul

 
 
 
除了最简洁的删除再创建 E:\CC 之外,我认为最简洁的是:
del /q/f E:\CC & for /d %%d in (E:\CC\*) do rd /q/s "%%d"

“&” 操作符把两句结合成一行。

一句搞定也行:
for /f "usebackq tokens=*" %%i in (`dir E:\CC /b`) do rd /q/s "E:\CC\%%i" 2>nul || del /q/f "E:\CC\%%i"

当然,这样反而更长更复杂,是不错的反面教材。:-)