Powershell复制项目目标不明确

时间:2018-12-03 18:25:20

标签: powershell copy-item

假设“ C:\ Temp \ first.txt”是一个文件,是否有某种方法可以确保

Copy-Item -Path "C:\Temp\first.txt" -Destination "C:\Temp\second.txt"

创建文件“ C:\ Temp \ second.txt”,否则失败?如果目标“ C:\ Temp \ second.txt”已作为目录存在,则我不希望它创建文件“ C:\ Temp \ second.txt \ second.txt”。

有没有不容易受到比赛条件影响的解决方案?

1 个答案:

答案 0 :(得分:3)

如果结果的目录路径与目标文件夹相同,则可以使用参数Copy-Item运行-PassThru并引发错误:

$src = 'C:\Temp\first.txt'
$dst = 'C:\Temp\second.txt'
try {
    $f = Copy-Item -Path $src -Destination $dst -PassThru
    if ($f.DirectoryName -eq $dst) {
        throw "$dst already exists as a folder."
    }
} catch {
    Remove-Item $f
    throw $_
}

除此之外,我想不出没有比赛条件的任何东西。这也有一个缺点,即无论创建副本还是在错误的位置创建副本,都将删除副本。