[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2022-12-2 11:49 编辑

假设当前目录下有多个一级子目录,名如 2022-09-11,2022-10-28,...
指定一个期限,格式如 2022-09-11,其中前导零不能省略,
则如下代码被运行后,会删除早于或等于 2022-09-11 的全部一级子目录。
备注》dir /b/ad/tc/od 参数中的 tc 表示按目录创建日期排序 改为 tw 则表示按目录最后修改日期排序,od 表示升序 o-d 表示降序,本代码须用 od。

楼主可先用模拟样本试用一下。删除目录还须慎重。

  1. @echo off
  2. set/p "qd=指定目录的删除期限(格式如2022-09-01 早于或等于此限均被删除): "
  3. if not defined qd exit/b
  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%F in ('dir /b/ad/tc/od 20??-??-??') do (
  6.     set "d8=%%~nF"
  7.     if "!d8!" leq "%qd%" (rd /s /q "%%F") else (endlocal &exit/b)
  8. )
  9. endlocal &exit/b
复制代码

TOP

如果不用tc或/tw排序,代码还可简化如下...
  1. @echo off
  2. set "qd=" &set/p "qd=指定目录的删除期限(格式如2022-09-01 早于或等于此限均被删除): "
  3. if not defined qd exit/b
  4. for /f "delims=" %%F in ('dir /b/ad/od 20??-??-??') do (
  5.     if "%%~nF" leq "%qd%" (rd /s /q "%%F")
  6. )
  7. exit/b
复制代码

TOP

请确认以下三点》
一、目录名须是 20??-??-?? 十位带前导零的格式
二、变量qd的输入值格式也须如上所述,且不能用双引号包裹
三、请用最新的简化版代码

TOP

返回列表