将7个最新文件保存在子文件夹中的批处理文件

时间:2016-10-03 11:04:09

标签: file batch-file delete-file

有人可以帮我创建批处理文件吗?基本上,我的目标是创建一个批处理文件,该文件将保留指定目录中所有文件夹中的最新7个文件(换句话说,最新的)。

我得到了

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

但这对当前目录起作用。

2 个答案:

答案 0 :(得分:1)

试试这个:

首先使用FOR /D/R Switch一起递归循环所有文件夹(从bat开始的地方)。并在每个目录上应用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

@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")
   )
)

答案 1 :(得分:0)

set "specificDir=c:\temp\"
for /f "skip=7" %%A in ('dir /b /o-d /a-d "%specificDir%"') do del "%%~fA"

应该这样做。我添加/a-d以排除文件夹,使用%%~fA获取包含驱动器/路径的完整文件名,并在其周围加上引号以安全地处理带空格的文件名(或路径)。