PowerShell含空格与变量路径的文件复制失败问题求助
解决PowerShell Copy-Item含空格路径与变量拼接问题
修正后的脚本
$Today = Get-Date -Format "yyyyMMdd" $Yesterday = (Get-Date).AddDays(-1).ToString('yyyyMMdd') $folderdate = $Yesterday $filedate = (Get-Date).AddDays(-1).ToString('dd.MM.yy') # 方式1:用双引号包裹完整路径,自动解析变量并保留空格 Copy-Item -Path "\\posa1251\d$\File_Transfer\NBS\$Today\Daily MI $Yesterday.xlsx" -Destination "\\wbbsmd.co.uk\corpdata\Corp\Group\NBS_WebSave_Reports\$folderdate\" Copy-Item -Path "\\posa1251\d$\File_Transfer\NBS\$Yesterday\$filedate - West Brom MI.xls" -Destination "\\wbbsmd.co.uk\corpdata\Corp\Group\NBS_WebSave_Reports\$folderdate\" # 方式2:用Join-Path拼接路径(更推荐,避免手动拼接失误) $sourcePath1 = Join-Path -Path "\\posa1251\d$\File_Transfer\NBS\$Today" -ChildPath "Daily MI $Yesterday.xlsx" $sourcePath2 = Join-Path -Path "\\posa1251\d$\File_Transfer\NBS\$Yesterday" -ChildPath "$filedate - West Brom MI.xls" $destPath = Join-Path -Path "\\wbbsmd.co.uk\corpdata\Corp\Group\NBS_WebSave_Reports" -ChildPath $folderdate Copy-Item -Path $sourcePath1 -Destination $destPath Copy-Item -Path $sourcePath2 -Destination $destPath
错误原因与解决说明
- 路径空格未正确引用:原脚本中路径含空格但未用引号包裹,PowerShell会将空格后的内容识别为独立参数,导致路径被截断,无法找到文件。用双引号包裹完整路径后,空格会被视为路径的一部分,参数解析正确。
- 变量拼接语法错误:原脚本中类似
Daily MI $Yesterday'.xlsx'的写法错误,双引号内部可以直接嵌入变量,PowerShell会自动替换变量值,无需额外的单引号拼接。 - UNC路径规范:虽然PowerShell支持省略开头双反斜杠的UNC路径,但显式写出
\\更规范,避免解析歧义。
额外验证建议
可以在Copy-Item前添加Test-Path验证路径,确认源文件存在:
Test-Path $sourcePath1 # 返回True表示路径有效 Test-Path $sourcePath2
内容的提问来源于stack exchange,提问作者AlanBaileyUK
相关产品推荐
相关产品推荐

