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

PowerShell技术问询:获取文件夹名并截取前4位年份用于年份对比

PowerShell截取文件夹名称前4位并对比当前年份

假设你已经通过Get-ChildItem拿到了目标路径下的文件夹集合,接下来可以用两种方式截取名称的前4位字符,再和当前年份做对比:

1. 截取文件夹名称的前4位字符

方法一:使用Substring方法

适合严格要求取前4位的场景,需加入长度判断避免名称过短时报错:

# 替换为你的目标路径
$targetPath = "D:\示例路径"
$folders = Get-ChildItem -Path $targetPath -Directory

# 提取每个文件夹名称的前4位
$folderYearList = $folders | ForEach-Object {
    if ($_.Name.Length -ge 4) {
        $_.Name.Substring(0, 4)
    } else {
        "名称过短"
    }
}

方法二:使用字符串切片

PowerShell 5.1及以上版本支持该写法,名称不足4位时会返回现有全部字符,无需额外处理报错:

$folderYearList = $folders | ForEach-Object {
    # 取索引0到3的字符并拼接成字符串
    $_.Name[0..3] -join ''
}

2. 和当前年份对比

先获取当前年份的字符串形式,再执行匹配或判断逻辑:

# 获取当前年份(转为字符串方便对比)
$currentYear = (Get-Date).Year.ToString()

# 筛选出名称前4位等于当前年份的文件夹
$currentYearFolders = $folders | Where-Object {
    $_.Name.Length -ge 4 -and $_.Name.Substring(0, 4) -eq $currentYear
}

# 输出每个文件夹的对比结果
$folders | ForEach-Object {
    $extractedYear = if ($_.Name.Length -ge 4) { $_.Name.Substring(0, 4) } else { "无效" }
    $isMatch = $extractedYear -eq $currentYear
    Write-Host "文件夹: $($_.Name) | 提取年份: $extractedYear | 匹配当前年份: $isMatch"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:42:17