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

Windows Batch如何创建包含唯一值集合的数组?

Windows Batch脚本实现数组去重(仅添加不存在的值)

要解决遍历文件时数组出现重复值的问题,我们可以利用环境变量作为哈希标记的方式,先记录已添加过的年份,仅当年份未被标记时才将其加入数组。以下是修改后的脚本:

@echo off
setlocal enableDelayedExpansion

set i=0

for %%f in (*00.DIF) do (
    set "fname=%%~nf"
    set "year=!fname:~-4!"
    
    :: 检查当前年份是否未被记录
    if not defined _year_!year! (
        :: 标记该年份已存在
        set "_year_!year!=1"
        :: 将年份加入数组
        set "Obj[!i!].name=!year!"
        set /a i+=1
    )
)

set "lastindex=!i!"

:: 输出去重后的数组内容
if !lastindex! gtr 0 (
    for /L %%f in (0,1,!lastindex!-1) do (
        echo !Obj[%%f].name!
    )
) else (
    echo 无符合条件的文件或所有年份均重复
)

endlocal

关键逻辑说明

  • 哈希标记机制:通过创建形如_year_YYYY的动态变量(比如年份2024对应_year_2024=1),标记该年份已经被添加到数组中。
  • 去重判断:if not defined _year_!year!确保只有未被标记的年份才会执行数组添加操作,从根源避免重复。
  • 修正数组遍历范围:原脚本的lastindex是计数器最终值,数组索引从0到i-1,因此循环范围调整为0,1,!lastindex!-1,避免输出空元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:02:32