0

我有三个目录,每个目录都包含 8 个子目录,每个子目录都包含 2 个我要删除的文件夹。

结构:

[编辑路径名]

C:/Process/CIM
             /AB_CIM
                    /LOG
                    /DATA
             /CC_CIM
                    /LOG
                    /DATA
             /CIM_RD
                    ...
           ...

C:/Process/DIM
             /AB_DIM
                    /LOG
                    /DATA
             /CC_DIM
                    /LOG
                    /DATA
             /DIM_RD
                    ...
             ...

C:/Process/RRS
             ...

LOG所以基本上我想删除DATA所有这些子目录。我想过使用两个单独的批处理文件来做到这一点***:

第一个批处理文件将包含:

call secondBatchFile.cmd CIM
call secondBatchFile.cmd DIM
call secondBatchFile.cmd RRS

现在,我不确定如何编写第二个批处理文件,因为这些子目录有不同的名称(但有一个共同的部分:AB_*、CC_*、*_RD 等)。我想知道是否有人可以帮助我。

提前感谢您的帮助。

*** 使用两个单独的批处理文件执行此操作的原因是,有时我可能需要为其中一个父目录(例如 CIM)保留LOGDATA,所以这样我可以只注释掉第一个批处理文件的一行,然后然后运行它。

4

2 回答 2

1

如果您确信其他目录中的 LOG 和 DATA 文件夹不会被拾取,您可以这样做。注释掉下面代码中的实际删除,并.dat在执行前查看文件输出。

REM Output all LOG and DATA sub-directories into corresponding DAT files
dir /ad/s/b log* > log_directories.dat
dir /ad/s/b data* > data_directories.dat

REM remove every entry listed in log_directories.dat
for /f %%i in (log_directories.dat) do rd/s %%i

REM remove every entry listed in data_directories.dat
for /f %%i in (data_directories.dat) do rd/s %%i

如果你从 运行它C:,你可能会得到你不想要的目录。但是假设您的所有目标都分组在一个专用的子目录下(并假设您.bat从该专用目录运行),这不会成为问题。

默认情况下,此解决方案会为您提供将要删除的目录的所需日志(尽管每次运行都会覆盖日志)。

于 2012-05-14T17:30:37.177 回答
1

如果 8 个子文件夹总是相同的模式,即AB_*, CC_*, *_RD,等,第二个批处理文件可能是这样的:

cd C:\%1%

rmdir AB_%1%\LOG
rmdir AB_%1%\DATA

rmdir CC_%1%\LOG
rmdir CC_%1%\DATA

rmdir %1%_RD\LOG
rmdir %1%_RD\DATA
...

cd c:\
于 2012-05-14T17:34:32.043 回答