You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NSIS如何按指定扩展名删除文件夹内的所有文件

NSIS 删除指定文件夹下特定扩展名文件的实现方法

你可以基于文件遍历逻辑,匹配扩展名后执行删除操作,以下是可直接复用的实现方案:

1. 提前引入依赖头文件

如果编译时提示GetExtension未定义,需要在脚本开头引入官方工具头文件:

!include "FileFunc.nsh"

2. 定义通用功能宏

先封装可重复调用的宏,支持自定义目标目录、待删除的扩展名:

!macro DeleteFilesByExt sTargetDir sExt
    ; 初始化文件查找句柄
    FindFirst $0 $1 "$sTargetDir\*.*"
    loop_find:
        StrCmp $1 "" end_find
        ; 跳过系统默认的目录占位符
        StrCmp $1 "." next_find
        StrCmp $1 ".." next_find
        ; 匹配文件扩展名
        ${GetExtension} $1 $2
        StrCmp $2 "${sExt}" 0 next_find
        ; 匹配成功则执行删除
        Delete "$sTargetDir\$1"
        next_find:
        FindNext $0 $1
        Goto loop_find
    end_find:
    FindClose $0
!macroend

如果需要递归遍历子目录下的对应文件,可在遍历逻辑中新增目录判断,嵌套调用该宏即可

3. 调用示例

你可以在安装/卸载逻辑的对应位置调用上述宏,比如要删除安装目录下temp文件夹内所有.tmp格式文件,调用方式如下:

; 调用宏执行删除
!insertmacro DeleteFilesByExt "$INSTDIR\temp" "tmp"

注意事项

  • 调试阶段可以先把Delete命令替换为MessageBox MB_OK打印匹配到的文件,确认筛选逻辑符合预期后再执行删除操作
  • 若涉及用户个人数据的删除操作,建议新增二次确认弹窗,避免误删有效文件

内容的提问来源于stack exchange,提问作者Gianmarco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:48:03