【Windows批处理III】实现删除含自定字符串的文件和文件夹(搜索子目录)

1)目的:实验室小网空间因镜像版本太多,容量告警,希望清出一部分空间

具体需求:删除E盘下,所有含rar字符串的文件;

              删除E盘下,所有含hi6620字符串文件夹;

步骤:

(风险请知:如果不check告警的文件file.log和folder.log,而在脚本暂停时继续,有误删的风险)

1.将下面批处理保存为xxx.bat

2.运行脚本

脚本如下:

@echo off

rem 如果是磁盘符,最好加上\符合
set DESC_PATH=E:\

rem 只需要部分字符
set file_str=rar
set folder_str=hi6620

rem 控制开关
set search_file=1
set search_folder=1
set del_flag=1

rem 临时文件,备份记录用,不用修改
set file_log=file.log
set folder_log=folder.log
set workspace=%CD%

rem 只查找文件
if %search_file%==1 (
    cd /d %DESC_PATH%
    rem 搜寻子目录,排除文件夹
    dir /b /s /a-d | find "%file_str%" > %workspace%\%file_log%
)

rem 只查找目录
if %search_folder%==1 (
    cd /d %DESC_PATH%
    rem 目的:希望不统计文件在内
    dir /b /s /a-a | find "%folder_str%" > %workspace%\%folder_log%
)

rem 待考虑引入输入判断yes or no 决定是否删除,这样更人性
echo Warning:%workspace%\%file_log% and %folder_log%, please check ...
pause

cd /d %workspace%
if %del_flag%==1 (
    if %search_file%==1 (
        for /f %%i in (%workspace%\%file_log%) do  (
            if exist %%i del %%i
        )
    )
    if %search_folder%==1 (
        for /f %%i in (%workspace%\%folder_log%) do  (
            if exist %%i rd /s /q %%i
        )
    )
)

cd /d %workspace%
pause

2)check两个临时文件时,建议用命令排除一些你不想看到的条目

比如排除含img或lib或log或tool字符串的条目,将结果存入tmp.log,命令如下:

type folder.log | findstr /v "img lib log tool" > tmp.log

点评:脚本中用的是find命令,只能一次搜索一个字符串,如果该为findstr命令效果会更好些;

转载于:https://www.cnblogs.com/caixu/p/3163899.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值