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

PowerShell如何提取文件名指定片段赋值给循环内变量

PowerShell提取固定前缀文件名指定片段实现

适用于前缀固定为test、格式为test-<动态内容>.<扩展名>的文件名批量处理场景,可直接嵌入循环结构,提取横杠后的动态内容赋值给$part变量,以下是两种可直接复用的实现方式:

方法1:正则匹配(推荐,容错性最强)

该方案不受动态内容长度、动态内容内含横杠、扩展名变化影响,是批量处理场景下的首选方案,示例代码如下:

# 遍历指定目录下所有符合test-*命名规则的文件,可自行修改Path路径为实际目标目录
Get-ChildItem -Path "C:\Your\Target\Path" -Filter "test-*.txt" | ForEach-Object {
    # 正则匹配捕获目标片段
    if ($_.Name -match '^test-(.+)\.[^.]+$') {
        $part = $matches[1]
        # 下方编写你的批量处理逻辑,以下为验证示例
        Write-Host "文件名:$($_.Name),提取到的动态片段:$part"
    }
}
  • 正则规则^test-(.+)\.[^.]+$会严格校验前缀,自动捕获test-之后到最后一个扩展名之前的全部内容,对示例文件test-123456.txt会准确提取到123456
  • 如果确定动态片段为纯数字,可将正则替换为^test-(\d+)\.[^.]+$,匹配精度更高,可自动跳过命名不符合规则的异常文件

方法2:字符串拆分(逻辑简单,仅适用于严格命名场景)

如果确定动态片段中不会出现横杠、额外的点号,可以用字符串拆分的方式快速取值,代码更简洁:

Get-ChildItem -Path "C:\Your\Target\Path" -Filter "test-*.txt" | ForEach-Object {
    # 先去除文件扩展名,再按横杠拆分取第二段内容
    $part = $_.BaseName.Split('-')[1]
    # 下方编写你的批量处理逻辑
    Write-Host "文件名:$($_.Name),提取到的动态片段:$part"
}

注意:该方法存在取值风险,如果文件名动态段本身包含横杠(例如test-abc-123.txt),拆分后只会取到第一段abc,和预期结果不符,这类场景必须使用正则匹配方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:36:16