PowerShell脚本故障:昨日文件无法复制至指定文件夹求助
PowerShell脚本修复:复制昨日修改的锁屏壁纸文件
原脚本的核心问题
- 采用字符串格式比较日期,依赖系统区域设置的日期格式,一旦格式变更就会失效,导致无法匹配到目标文件
- 直接复制无扩展名的文件,无法正常识别,且未处理复制过程中的异常情况
修复后的完整脚本
$DestinationFolder = "D:\Dropbox\Public\Download\New folder" # 确保目标文件夹存在,不存在则创建 if (!(Test-Path $DestinationFolder)) { New-Item -ItemType Directory -Force -Path $DestinationFolder | Out-Null } # 用时间范围直接判断,避开字符串格式的坑 $yesterdayStart = (Get-Date).Date.AddDays(-1) $todayStart = (Get-Date).Date # 筛选出昨日0点到今日0点之间修改的文件 $Files = Get-ChildItem "C:\Users\Harel Gordon\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets" -File | Where-Object { $_.LastWriteTime -ge $yesterdayStart -and $_.LastWriteTime -lt $todayStart } foreach ($File in $Files) { # 给壁纸文件加上.jpg扩展名,方便直接查看 $destFilePath = Join-Path -Path $DestinationFolder -ChildPath "$($File.Name).jpg" try { Copy-Item -Path $File.FullName -Destination $destFilePath -Force Write-Host "已复制: $($File.Name)" } catch { Write-Host "复制失败: $($File.Name),错误原因: $($_.Exception.Message)" } } Read-Host -Prompt "按回车键退出"
关键修复点说明
- 日期判断逻辑优化:直接用
DateTime对象比较时间范围,不管系统区域格式怎么变更,都能准确匹配昨日修改的文件 - 添加文件扩展名:锁屏壁纸文件夹里的文件没有后缀,加上
.jpg后复制过去就能直接打开查看 - 异常捕获处理:复制出错时会显示具体错误信息,比如文件被占用、权限不足等,方便排查问题
- 规范路径拼接:用
Join-Path生成目标路径,避免手动拼接字符串出现的格式错误
内容的提问来源于stack exchange,提问作者Harel Gordon
相关产品推荐
相关产品推荐

