2012-11-08 71 views
0

请帮忙批量写入:CMD批量删除文件夹

在磁盘c:\我有文件夹名为test; 在这个文件夹中我有不同名称的子文件夹。 我需要批处理命令来遍历所有子文件夹,并查找名为“Log”和/或“sqlite.sql”的文件;如果这些文件大小为< 0 Kb或不存在,则在没有提示的情况下删除所有文件的子文件夹。

for each sub in Test 
if Isfile("Log") or Isfile("sqlite.sql") and EachFileSizes > 0 Then 
Else 
Sub.delete 
End If 
next 

回答

1

此问题的解决方案取决于子文件夹的位置。如果他们都是直接在C:\测试(只有一个级别深),那么这是解决方案:

@echo off 
setlocal EnableDelayedExpansion 
cd C:\test 
rem Process all subfolders 
for /D %%a in (*) do (
    rem Initially, set to delete this subfolder 
    set delete=yes 
    rem Confirm that 
    for %%b in (%%a\Log %%a\sqlite.sql) do (
     set size=%%~Zb 
     if !size! gtr 0 set delete=no 
    ) 
    if !delete! equ yes (
     ECHO rd /S /Q %%a 
    ) 
) 

如果子文件夹中可能存在几个层次深处C:\测试,那么解决的办法是复杂。

+0

需要一些更正: 1.本示例不删除子文件夹,只是创建一个子文件夹列表,如“rd/S/Q'文件夹名称'” 2.此示例不添加到删除列表子文件,它具有日志文件= 0 kb,如果存在另一个sqlite.sql文件。 逻辑必须是如果日志> 0并存在sqlite.sql然后离开子文件夹,否则如果日志= 0或sqlite.sql或日志文件不存在然后删除。 –

+0

1.此解决方案不删除也不创建任何内容,它只是_show_最终结果命令。当你对此满意时,删除'ECHO'部分,执行命令。 2.您的第一个请求非常明确:“如果文件大小<0 Kb或不存在,则删除此子文件夹”“,如果Isfile(”Log“)或Isfile(”sqlite.sql“)和EachFileSizes> 0”。这是一个新的要求,需要一个不同的代码(当我有一段时间时,我会这样做......) – Aacini