0

3 つのディレクトリがあり、これらの各ディレクトリには 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
             ...

したがって、基本的には、これらすべてのサブディレクトリでLOGandを削除したいと考えています。DATA私は2つの別々のバッチファイルを使用してこれを行うことを考えました***:

最初のバッチ ファイルには次のものが含まれます。

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

これらのサブディレクトリの名前が異なるため、2 番目のバッチ ファイルの書き方がわかりません (ただし、共通部分: AB_*、CC_*、*_RD など)。誰かがそれを手伝ってくれるかどうか疑問に思っていました。

事前にご協力いただきありがとうございます。

*** 2 つの別個のバッチ ファイルを使用してこれを行う理由は、親ディレクトリの 1 つ (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,、2 番目のバッチ ファイルは次のようになります。

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 に答える