zoukankan      html  css  js  c++  java
  • 【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命令效果会更好些;

  • 相关阅读:
    高斯消元
    丑数
    扩展欧几里得算法与线性同余方程
    数论-求逆元
    数论-快速幂-快速乘
    宋逸轩长难句 2
    宋逸轩长难句 1
    c语言 文件
    c语言程序结构
    c语言结构类型
  • 原文地址:https://www.cnblogs.com/caixu/p/3163899.html
Copyright © 2011-2022 走看看