如何通过PowerShell获取上一个工作日并匹配指定FTP下载文件
获取上一个工作日并匹配目标文件(PowerShell)
直接给你能落地的解决方案,先解决上一个工作日的日期计算问题,再结合你的文件匹配需求:
1. 获取上一个工作日的日期字符串(格式yyyyMMdd)
$today = Get-Date # 根据当前星期几计算上一个工作日 switch ($today.DayOfWeek) { Monday { $lastWorkDay = $today.AddDays(-3) } # 周一的上一个工作日是上周五,需减3天 default { $lastWorkDay = $today.AddDays(-1) } # 周二到周日直接减1天(周日减1天是周六,但文件仅工作日生成,无需额外处理) } # 转换成文件名需要的日期格式 $lastWorkDayStr = $lastWorkDay.ToString("yyyyMMdd")
2. 匹配目标文件
拿到日期字符串后,拼接文件名并检查C:\files\目录下的对应文件:
$targetFilePath = "C:\files\sampl_position_$lastWorkDayStr" if (Test-Path $targetFilePath) { Write-Host "找到目标文件:$targetFilePath" # 这里可以添加你后续要执行的操作,比如读取文件、处理数据等 } else { Write-Host "未找到目标文件:$targetFilePath" }
简洁版表达式参考
如果想要像你之前的下一个工作日代码那样用简洁表达式,也可以这么写(逻辑和上面一致,只是可读性稍弱):
$lastWorkDay = (Get-Date).AddDays(-$(1 + @{Monday=2; default=0}[(Get-Date).DayOfWeek])) $lastWorkDayStr = $lastWorkDay.ToString("yyyyMMdd")
内容的提问来源于stack exchange,提问作者Роман Рослый
相关产品推荐
相关产品推荐

