求助:用PowerShell复制JPG文件并同步源文件夹结构
PowerShell脚本修复方案
错误原因
你的脚本报错核心问题有两个:
- foreach循环中误用了
$_,当前循环变量是$srcitem,$_在此上下文无值,导致Copy-Item的-Path参数为空 $srcfolder末尾加了*,会导致路径替换匹配异常,且Get-ChildItem配合-Recurse时,路径无需额外加通配符
修复后的脚本
$srcfolder = "Z:\source" $workfolder = "D:\Sorted" # 按你需求将目标路径修正为D:\Sorted,原脚本写的是D:\Working foreach ($srcitem in Get-ChildItem $srcfolder -Filter *.jpg -Recurse) { # 替换源路径为目标路径,保留原有目录结构 $newPath = $srcitem.FullName -replace [regex]::Escape($srcfolder), $workfolder # 提前创建目标目录,避免因目录不存在导致复制失败 New-Item -ItemType Directory -Path (Split-Path $newPath -Parent) -Force | Out-Null # 执行文件复制 Copy-Item -Path $srcitem.FullName -Destination $newPath -Force }
关键修复说明
- 用循环变量
$srcitem替代$_,正确引用当前遍历的文件对象 - 修正
$srcfolder为不带通配符的根路径,确保路径替换逻辑准确 - 添加目录创建步骤,避免复制时因目标目录不存在报错
- 统一目标路径为你需求中的
D:\Sorted
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

