繁体   English   中英

在特定计数值后自动删除子文件夹中的文件

[英]Auto delete files in subfolders after a certain count value

任何人都可以向我解释批处理脚本在 Windows 中是如何工作的吗? 我有一个包含子文件夹的文件夹,这些子文件夹包含图像。 我需要一个脚本来自动删除这些子文件夹中 7 个及以上的图像,只是在每个子文件夹中最多保留 6 个图像,最好是按字母顺序排列的前 6 个。 我找到了一些脚本,将它们保存为 .bat,但我不知道下一步该怎么做。

1

@echo off
setlocal
set /a cnt=0
set "keep=6"
for /f "eol=: delims=" %%F in ('dir /b /o-d /a-d *.jpeg') do (
  if defined keep (
    2>nul set /a "cnt+=1, 1/(keep-cnt)" || set "keep="
  ) else del "%%F"
)

2

@echo off
for /f "tokens=1* delims=:" %%a in ('dir /b /o-d *.jpeg ^| findstr /N "^"') do (
   if %%a gtr 6 del "%%b"
)

3

for /f "skip=7 eol=: delims=" %%F in ('dir /b /o-d /a-d *.jpeg') do @del "%%F"

4

@echo off
setlocal enableextensions disabledelayedexpansion

rem How many elements to keep
set "keep=6"

rem Retrieve folder from batch arguments
set "folder=%~1"

rem If no folder indicated, use current active directory
if not defined folder for %%a in (.) do set "folder=%%~fa"

rem Ensure we are working in the correct folder
pushd "%folder%" && (
    rem For each element in the folder, skipping the first n 
    for /f "skip=%keep% delims=" %%a in (' dir /b /on ') do (
        rem If it is a folder, use rmdir, else use del
        if exist "%%a\" ( echo rmdir /s /q "%%a" ) else ( echo del "%%a" )
    )
    rem Work done. Return to previous active directory
    popd
) || ( 
    rem Folder change failed
    echo Target folder does no exist 
)

我终于找到了一个可以按照我需要的方式工作的脚本

for /f %%a in ('dir /b /ad') do (
 for /f "skip=6" %%b in ('dir /b %%a /on') do (
  del %%a\%%b
 )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM