2012-04-25 9 views
0

で最後のXファイルを維持する複数のフォルダ内に複数のファイルを削除します。それは20の最新のログファイルを保持し、フォルダ内の "log11101"で始まる残りのファイルをすべて削除します(これらのフォルダに他のログファイルがあるので、このスクリプトで削除したくない... したいこのスクリプトを複数のフォルダに適用しますが、すべてがFOLDER1にあり、同じ "for/f" skip = 20 ......................... 。.........デル「%% F」を行う 親フォルダがFOLDER1/LOGSですので、私はこのような何かを行うので取り払わ:バッチファイルは、私が書いたスクリプトに問題がある各フォルダ

@echo off 
e: 
cd folder1 
cd logs 
cd App1 

for /F "skip=20 delims=" %%F in ('dir /b/o-d/a-d log11101*.*') do del "%%F" 

cd .. 
cd App2 

for /F "skip=20 delims=" %%F in ('dir /b/o-d/a-d log11101*.*') do del "%%F" 

しかし、それは動作しません。それは働きます! 1つのフォルダに対して、もう1つは、20個のファイルを保存して残りのファイルを削除するのではなく、1つのファイル以外のファイルをすべて削除します。

私がスクリプトでターゲットにしたいすべてのフォルダを置くために、このようなスクリプトを一度だけ実行しますか? :

x:/folder1/logs/app1 
x:/folder1/logs/app2 
x:/folder1/logs/app4 

for /f "skip=20............... 

おかげ

答えて

2

2回目の自分のコードベースが唯一の第二のフォルダに1ファイルを保存し、どのように私は見ていない - 第二フォルダには、第一に同じ動作をする必要があります。最初にApp2フォルダに複数のlog11101 *ファイルがあることは確かですか?

おすすめ - DELコマンドの前にECHOを挿入し、結果を確認してください。出力が正しく見えたら、スクリプトを機能させるためにECHOを削除します。

@echo off 
for %%D in ("App1" "App2" "App4") do (
    cd /d "e:\folder1\logs\%%~D" 
    for /f "skip=20 delims=" %%F in ('dir /b /o-d /a-d log11101*.*') do echo del "%%F" 
) 

はあなたのあなたのルート内のすべてのフォルダに削除を実行する場合:

はそれは便利なあなたのルートに存在するフォルダのリストにあなたの削除アクションを実行するために非常に少しのコードを取ります

@echo off 
for /d %%D in ("e:\folder1\logs\*") do (
    cd /d "%%D" 
    for /f "skip=20 delims=" %%F in ('dir /b /o-d /a-d log11101*.*') do echo del "%%F" 
) 

DELの前にECHOを追加しましたので、すべてがうまく見えたら、ECHOを削除して機能させてください。

関連する問題