PowerShell复制文件时若目标路径存在test-old.txt则跳过的实现方法
优化后可直接使用的PowerShell代码
$Source = '\\ser04\h\AppsData\test.txt' $Destination = 'C:\users\*\AppData\Roaming\SAP\Common\' # 遍历所有匹配的目标目录 Get-ChildItem $Destination -Directory | ForEach-Object { # 拼接当前目录下test-old.txt的完整路径 $oldFile = Join-Path -Path $_.FullName -ChildPath 'test-old.txt' # 仅当旧文件不存在时执行复制 if (-not (Test-Path -Path $oldFile -PathType Leaf)) { Copy-Item -Path $Source -Destination $_ -Force } }
逻辑说明
- 给
Get-ChildItem追加-Directory参数,限定仅返回目录对象,避免匹配到同路径下的文件引发执行异常 - 使用
Join-Path拼接路径,规避手动拼接可能出现的斜杠不匹配问题 Test-Path追加-PathType Leaf参数,限定仅判断是否为文件,避免出现同名目录时触发误判- 只有目标目录下不存在
test-old.txt时才会执行复制操作,完全匹配需求
内容的提问来源于stack exchange,提问作者RIC
相关产品推荐
相关产品推荐

