有人可以帮我创建批处理文件吗?基本上,我的目标是创建一个批处理文件,该文件将保留指定目录中所有文件夹中的最新7个文件(换句话说,最新的)。
我得到了
set file2del=
for /f "skip=7" %%A in ('dir /b/o-d') do set file2del=%%A
if not "%file2del%"=="" del "%file2del%"
但这对当前目录起作用。
答案 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
获取包含驱动器/路径的完整文件名,并在其周围加上引号以安全地处理带空格的文件名(或路径)。