2016-10-03 19 views
1

誰でもバッチファイルを作成できますか?基本的に私の目標は、すべてのフォルダー内の最新の7つのファイル(言い換えれば最新)を指定ディレクトリーから保持するバッチ・ファイルを作成することです。サブフォルダに最新の7つのファイルを保存するバッチファイル

私は、現在のディレクトリのための

set file2del= 
for /f "skip=7" %%A in ('dir /b/o-d') do set file2del=%%A 
if not "%file2del%"=="" del "%file2del%" 

しかし、この仕事を得ました。すべてのフォルダ(バットが開始されたところから)に再帰的ループに/Rスイッチと

まず使用FOR /D

答えて

1

はこれを試してみてください。各ディレクトリにFOR /Fループを適用します。

@echo off 

for /d /r %%a in (*) do (echo Treating Diretory ==^> %%a 
    for /f "skip=7" %%b in ('dir /b/o-d "%%a"') do del "%%a\%%b" 
) 

あなたはより多くのあなたがSKIP=7の代わりにカウンタを使用することができますdetailled何かが必要な場合:

@echo off 
setlocal enabledelayedexpansion 


for /d /r %%a in (*) do (echo Treating Diretory ==^> %%a 
    set /a $count=1 
    for /f %%b in ('dir /b/o-d "%%a"') do (
      if !$count! LEQ 7 (
       echo Keeping File[!$count!] ==^> %%b 
       set /a $count+=1 
     ) else (echo Deleting File ==^> %%a\%%b 
        del "%%a\%%b") 
    ) 
) 
0
set "specificDir=c:\temp\" 
for /f "skip=7" %%A in ('dir /b /o-d /a-d "%specificDir%"') do del "%%~fA" 

が何をすべきを。フォルダを除外するには/a-dを追加し、ドライブ/パスを含む完全なファイル名を取得するために%%~fAを使用し、スペースでファイル名(またはパス)を安全に処理するために引用符を付けました。

関連する問題