任何人都可以幫助我創建批處理文件嗎?基本上,我的目標是創建一個批處理文件,將指定目錄中的所有文件夾中的最新7個文件(換句話說,最新的)。將最新文件保存在子文件夾中的批處理文件
我
set file2del=
for /f "skip=7" %%A in ('dir /b/o-d') do set file2del=%%A
if not "%file2del%"=="" del "%file2del%"
但這項工作當前目錄。
任何人都可以幫助我創建批處理文件嗎?基本上,我的目標是創建一個批處理文件,將指定目錄中的所有文件夾中的最新7個文件(換句話說,最新的)。將最新文件保存在子文件夾中的批處理文件
我
set file2del=
for /f "skip=7" %%A in ('dir /b/o-d') do set file2del=%%A
if not "%file2del%"=="" del "%file2del%"
但這項工作當前目錄。
試試這個:
首先使用FOR /D
用(從那裏蝙蝠開始)的/R
切換到遞歸循環上的所有文件夾。並在每個目錄上應用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")
)
)
set "specificDir=c:\temp\"
for /f "skip=7" %%A in ('dir /b /o-d /a-d "%specificDir%"') do del "%%~fA"
應該做的。我添加了/a-d
以排除文件夾,使用%%~fA
獲取完整的文件名,包括驅動器/路徑,並在其周圍放置引號以安全地處理帶有空格的文件名(或路徑)。