用于删除目录中旧文件夹和不同文件夹的批处理文件

时间:2011-05-18 22:16:24

标签: batch-file dos

我想写一个DOS批处理文件来删除目录中的旧文件夹,但保留最新的文件夹。以下是D:\myfolders\下的文件夹示例:

Jack_20110507  (previous day time-stamped folder)
Jack_20110508  (current day time-stamped folder)
James_20110507
James_20110508 
Kenny_20110507
Kenny_20110508
...

我想删除所有前一天带有时间戳的文件夹*_20110507,但保留所有当前带时间戳的文件夹*_20110508每天都会创建新的带时间戳的文件夹

2 个答案:

答案 0 :(得分:1)

以下脚本将以YYYYMMDD获得当前的本地日期(由this answer提供)。

然后循环遍历给定目录中的所有文件夹(在我的情况下,这是包含脚本的文件夹下面的测试子文件夹)并检查文件夹名称的最后8个字符。如果它们与今天的日期不匹配,则会删除该文件夹。

/Q禁用文件夹删除确认。如果要在删除文件夹之前提示您进行确认,请将其删除。

@ECHO off & setlocal EnableDelayedExpansion

REM Get the local datetime
FOR /F "usebackq tokens=1,2 delims==" %%i IN (`wmic os get LocalDateTime /VALUE 2^>NUL`) DO IF '.%%i.'=='.LocalDateTime.' SET ldt=%%j

REM Set the datetime to YYYYMMDD format.
SET today=%ldt:~0,4%%ldt:~4,2%%ldt:~6,2%

REM For every file in the folder test:
FOR /D %%f IN (.\test\*) DO (
    REM Store the folder name temproarily
    SET folder=%%f
    REM Get just the ending date part of the folder name
    SET folderpart=!folder:~-8!
    REM If it doesn't match todays date, delete the folder.
    IF NOT !folderpart!==!today! RD /Q %%f
)
@ECHO ON

答案 1 :(得分:0)

除了最简单的东西之外,我不会使用批处理脚本。

我建议您查看Python等脚本语言。