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

Windows平台下如何为文件添加可在资源管理器显示的原生tags属性标签(含编程实现与批量操作方法)

Windows平台下如何为文件添加可在资源管理器显示的原生tags属性标签(含编程实现与批量操作方法)

Hey there! I totally get wanting to tag multiple images at once so the tags show up natively in Windows 11 File Explorer—those external database tags from apps like Darktable don’t cut it when you want to filter or sort directly in Explorer. Let’s break down both manual bulk methods and programming solutions to get this done right.

一、手动批量添加标签(无需代码)

这是最快捷的无代码方案,适合偶尔批量操作的场景:

  • 打开文件资源管理器,选中所有需要添加标签的图片
  • 右键点击选中的文件 → 属性 → 详细信息选项卡
  • 找到「标签」字段,输入你想要的标签,用分号分隔(比如 旅行;夏天;海滩)
  • 点击「确定」保存,所有选中文件都会带上这些标签

二、编程实现批量添加标签

如果需要频繁批量处理,或者要结合其他工作流,编程方法会更高效。

方法1:使用PowerShell(Windows内置,无需额外安装)

PowerShell可以通过Windows Shell COM对象直接修改文件的原生属性,下面是实用的脚本:

首先,定义一个通用的设置标签函数:

Function Set-FileTags {
    param(
        [Parameter(Mandatory=$true)]
        [string]$FilePath,
        [Parameter(Mandatory=$true)]
        [string[]]$Tags
    )
    $shell = New-Object -ComObject Shell.Application
    $folder = $shell.Namespace((Split-Path $FilePath))
    $file = $folder.ParseName((Split-Path $FilePath -Leaf))
    # 将标签数组转为分号分隔的字符串
    $tagsString = $Tags -join ';'
    # 18是「标签」属性的索引值(中文系统对应「标签」,英文系统为Tags)
    $folder.SetDetailsOf($file, 18, $tagsString)
}

然后批量处理某个文件夹下的所有图片(比如JPG格式):

# 替换为你的图片文件夹路径
$targetFolder = "C:\Users\YourName\Pictures\SummerVacation"
# 遍历文件夹下所有JPG文件(含子文件夹)
Get-ChildItem -Path $targetFolder -Filter *.jpg -Recurse | ForEach-Object {
    # 给每个文件添加自定义标签
    Set-FileTags -FilePath $_.FullName -Tags @("旅行", "夏天", "海滩")
}

小提示:如果发现标签没生效,可能是属性索引值在你的系统上不同。可以运行以下代码找到「标签」对应的索引:

$shell = New-Object -ComObject Shell.Application
$folder = $shell.Namespace("C:\任意文件夹路径")
for ($i = 0; $i -le 300; $i++) {
    $propName = $folder.GetDetailsOf($folder.Items(), $i)
    if ($propName -eq "标签") {
        Write-Host "标签属性索引为:$i"
        break
    }
}

方法2:使用Python(适合有编程基础的用户)

需要先安装pywin32库来调用Windows Shell COM对象:

pip install pywin32

然后编写脚本批量设置标签:

import win32com.client
import os

def set_file_tags(file_path, tags):
    shell = win32com.client.Dispatch("Shell.Application")
    folder_path, file_name = os.path.split(file_path)
    folder = shell.Namespace(folder_path)
    file_item = folder.ParseName(file_name)
    # 将标签列表转为分号分隔的字符串
    tags_str = ";".join(tags)
    # 18为标签属性索引,和PowerShell一致
    folder.SetDetailsOf(file_item, 18, tags_str)

# 批量处理目标文件夹下的所有PNG图片(含子文件夹)
target_dir = r"C:\Users\YourName\Pictures\MountainTrip"
for root, dirs, files in os.walk(target_dir):
    for file in files:
        if file.lower().endswith(".png"):
            full_path = os.path.join(root, file)
            # 自定义标签内容
            set_file_tags(full_path, ["自然", "山脉", "2024"])

三、关键说明

  • 这些方法修改的是文件的原生扩展属性:标签会直接存储在文件内部(支持的格式如JPG、PNG、TIFF等),或者在文件夹的desktop.ini中(不支持嵌入式属性的文件),确保在资源管理器中能直接看到、筛选和排序。
  • 对比Darktable等工具:这类专业图像管理软件的标签存储在自身数据库中,不会同步到Windows原生属性,所以无法在资源管理器中识别。

备注:内容来源于stack exchange,提问作者skeetastax

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 07:59:52