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
相关产品推荐
相关产品推荐

