批量删除90天前日期命名的文件夹.bat

本文介绍了一个批处理脚本,该脚本能够计算出指定天数之前的日期,并展示了如何通过简单的算术操作和条件判断来实现日期的倒推。代码中包括了日期解析、天数相减及跨月处理等关键步骤。

d:
cd D:\MsgStorageServer\Bulk
@echo off
:: 求N天前的日期
:: 思路:
::   模拟手工运算,用日期数减去天数,差值为负时向高位借1。
:: 特点:
::   代码简洁,容易理解,速度快慢取决于指定的天数大小

setlocal enabledelayedexpansion

:Main
cls
:: 日期可以带星期,但是,必须以年月日的顺序排列
:: 年份必须是四位,否则会出错
set day=%date%
set days=0
echo.&echo.
echo       指定的日期是:%day%
echo.
::set /p input=      请指定要追溯的天数:
set input=90

:: 提取日期
for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
    set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
)

set /a sd-=input

if %sd% leq 0 call :count

cls
echo.&echo.
echo       指定的日期是:%day%
echo.
set sm=0%sm%
set sd=0%sd%
echo       %input% 天前的日期是:%sy%-%sm:~-2%-%sd:~-2%

echo 删除文件夹 %sy%%sm:~-2%%sd:~-2%
del /s /q %sy%%sm:~-2%%sd:~-2%
rd /s /q %sy%%sm:~-2%%sd:~-2%
::pause>nul

:count
set /a sm-=1
if !sm! equ 0 set /a sm=12, sy-=1
call :days
set /a sd+=days
if %sd% leq 0 goto count
goto :eof

:days
:: 获取指定月份的总天数
set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
set /a max=28+leap
set num=0
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
    set /a num+=1
    if %sm% equ !num! set days=%%i&goto :eof
)
goto :eof

使用 .bat 脚本批量复制文件夹有多种方法,以下为你介绍不同场景下的实现方式: ### 逐行指定文件夹复制 若要逐个指定需要复制的文件夹及其目标位置,可按如下方式编写脚本。比如要将 `E:\source_folder1` 复制到 `E:\target_folder1`,将 `E:\source_folder2` 复制到 `E:\target_folder2` 等,可编写如下脚本: ```batch @echo off xcopy "E:\source_folder1" "E:\target_folder1" /e /i /y xcopy "E:\source_folder2" "E:\target_folder2" /e /i /y pause ``` 在上述脚本里,`xcopy` 是用于复制文件夹的命令,`/e` 表示复制所有子文件夹(包括空文件夹),`/i` 表示若目标不存在且要复制多个文件,会将目标当作文件夹,`/y` 表示不提示是否覆盖已有文件。 ### 依据列表批量复制文件夹 若需复制的文件夹名称存于一个文本文件中,可借助 `for /f` 循环读取该文本文件,并批量复制文件夹。例如,把 `G:\my\` 目录中 `fileList.txt` 所列出的所有文件夹复制到目标目录 `G:\batbatbat\result` 中,脚本如下: ```batch @echo off for /f "delims=" %%i in (G:\fileList.txt) do ( xcopy "G:\my\%%i" "G:\batbatbat\result\%%i" /e /i /y ) pause ``` 此脚本会逐行读取 `G:\fileList.txt` 文件,把每行内容作为文件夹名,将对应的文件夹从 `G:\my\` 复制到 `G:\batbatbat\result\` 目录下。 ### 按数量批量复制同一文件夹 若要将一个文件夹复制多个副本,可使用如下脚本: ```batch @echo off set /P dir1=需要复制的文件夹名: set /p d=复制多少个文件夹: set dir2=%dir1%%%i for /l %%i in (1,1,%d%) do ( xcopy %dir1% %dir2% /e /i /y ) pause ``` 运行该脚本后,会提示输入需要复制的文件夹名以及要复制的数量,之后会按要求复制指定数量的文件夹副本。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值