【问题标题】:Bat script to delete files with specific extention用于删除具有特定扩展名的文件的 Bat 脚本
【发布时间】:2014-05-08 15:31:35
【问题描述】:

我正在尝试编写一个 bat 脚本,该脚本将从所有驱动器(包括附加的外部驱动器)中删除具有特定扩展名(例如“.log”)的每个文件。

例如,如果没有连接外部驱动器,则脚本将删除 C:\ 下的所有 '.log' 文件以及当时其他已挂载的分区。

如果连接了外部驱动器,脚本将删除所有驱动器下的所有“.log”文件。

[非必要] 如果脚本可以保存大于 1MB 的 .log 文件,那就太好了。此外,如果脚本能够自动检测新连接的驱动器并从中删除“.log”文件,那就太棒了。

我知道我问了很多,但你的知识让我印象深刻很多次!

非常感谢您!

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    您只需要一个 for 循环来执行此操作(以 09stephenb 的代码为胆量:))

    @echo off
    for /f "skip=1 delims=" %%x in ('wmic logicaldisk get caption') do (
        echo INFO: Removeing all log files from %%x\
        del %%x\*.log /s /f /q
    )
    echo INFO: Done
    pause
    

    【讨论】:

      【解决方案2】:

      这是你想要的吗?

      @echo off
      pushd C:\
      echo removeing all log files
      del \*.log /s /f /q
      echo done & pause
      exit
      

      它将搜索所有带有 .log 扩展名的文件。只要确保你不需要它们中的任何一个。您需要以管理员身份运行批处理文件。将pushd C:\ 替换为pushd [your drive]:\

      使用所有驱动器:

      @echo off
      echo removeing all log files
      pushd A:\
      del \*.log /s /f /q
      pushd B:\
      del \*.log /s /f /q
      pushd C:\
      del \*.log /s /f /q
      pushd D:\
      del \*.log /s /f /q
      pushd E:\
      del \*.log /s /f /q
      pushd F:\
      del \*.log /s /f /q
      pushd G:\
      del \*.log /s /f /q
      pushd H:\
      del \*.log /s /f /q
      pushd I:\
      del \*.log /s /f /q
      pushd J:\
      del \*.log /s /f /q
      pushd K:\
      del \*.log /s /f /q
      pushd L:\
      del \*.log /s /f /q
      pushd M:\
      del \*.log /s /f /q
      pushd N:\
      del \*.log /s /f /q
      pushd O:\
      del \*.log /s /f /q
      pushd P:\
      del \*.log /s /f /q
      pushd Q:\
      del \*.log /s /f /q
      pushd R:\
      del \*.log /s /f /q
      pushd S:\
      del \*.log /s /f /q
      pushd T:\
      del \*.log /s /f /q
      pushd U:\
      del \*.log /s /f /q
      pushd V:\
      del \*.log /s /f /q
      pushd W:\
      del \*.log /s /f /q
      pushd X:\
      del \*.log /s /f /q
      pushd Y:\
      del \*.log /s /f /q
      pushd Z:\
      del \*.log /s /f /q
      echo done & pause
      exit
      

      【讨论】:

      • 这几乎是我所需要的,因为这并没有考虑到所有不同的驱动器,而只考虑了当前的工作目录及其子目录!
      • 谢谢!是否可以自动检测所有驱动器而不是在每个驱动器上使用“pushd”?那是因为并非所有驱动器都会一直挂载。
      猜你喜欢
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 2012-11-29
      • 2016-01-06
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多