You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell ForEach循环复制文件至多位置失败问题排查与解决

解决PowerShell批量复制文件仅第一个目标生效的问题

问题现象

尝试用PowerShell的ForEach循环将单个文件复制到多个目标位置时,文件仅成功复制到第一个路径,第二个路径未完成复制,反而被直接输出到控制台。

问题原因

原脚本中$TESTFilepaths = $Testpath1;$Testpath2的写法存在核心错误:在PowerShell中,分号是语句分隔符,这行代码实际是先给$TESTFilepaths赋值为$Testpath1,然后单独执行$Testpath2(这就是第二个路径被输出到控制台的原因),并没有将两个路径拼接成带分号的字符串。后续用split(';')拆分时,得到的列表只有第一个路径,导致循环仅执行一次。

原脚本

$filename = "test.txt"
$Fullpath = "C:\Path\To\Folder\"+$filename
$Testpath1 = "C:\Path\To\Folder\TestCopyTo\"
$Testpath2 = "C:\Path\To\Folder\TestCopyTo_SecondPath\"
$TESTFilepaths = $Testpath1;$Testpath2
$FilePathList = $TESTFilepaths.split(';')
    
foreach($Path in $FilePathList){
                        
    Write-Host "Copying $Filename to $Path"

    Copy-Item $Fullpath -destination $Path 
    
}

修正方案

将路径拼接方式改为字符串连接操作$Testpath1+';'+$Testpath2,这样才能生成包含两个路径的分号分隔字符串,拆分后得到正确的路径列表,循环就能正常遍历所有目标路径。

修正后脚本

$filename = "test.txt"
$Fullpath = "C:\FIS\Site\Quantum Reporting\Output\"+$filename
$Testpath1 = "C:\FIS\Site\Quantum Reporting\Output\TestCopyTo"
$Testpath2 = "C:\FIS\Site\Quantum Reporting\Output\TestCopyTo_SecondPath"
$TESTFilepaths = $Testpath1+';'+$Testpath2
$FilePathList = $TESTFilepaths.split(';')

foreach($Path in $FilePathList){
                        
    Write-Host "Copying $Filename to $Path"

    Copy-Item $Fullpath -destination $Path 
    
}

补充说明

生产环境中的路径字符串本身自带分号分隔,因此不会出现这个问题;而测试环境需要手动拼接分号,错误使用语句分隔符才导致了异常。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:15:37