在我内部系统上进行重复日志收集时,发现递归Copy-Item调用的奇怪行为。
比如说,我有一个C:\Source文件夹,里面有一些文件和子文件夹,这些子文件夹里也有文件。我想要将它们递归地复制到C:\Target中。第一次复制时,所有源都会被递归地复制到C:\Target中。
问题出在第二次尝试将"C:\Source"复制到"C:\Target"时。此时,"C:\Source"将会被复制到"C:\Target\Source"中。
例如:
有什么办法可以让Copy-Item工作得像...
比如说,我有一个C:\Source文件夹,里面有一些文件和子文件夹,这些子文件夹里也有文件。我想要将它们递归地复制到C:\Target中。第一次复制时,所有源都会被递归地复制到C:\Target中。
问题出在第二次尝试将"C:\Source"复制到"C:\Target"时。此时,"C:\Source"将会被复制到"C:\Target\Source"中。
例如:
cls
if(Test-Path "C:\Target")
{
Remove-Item "C:\Target"
}
Copy-Item "C:\Source" "C:\Target" -Force -Recurse | Out-Null
DIR "C:\Target"
Write-Host "OK"
Write-Host " "
Write-Host " "
Copy-Item "C:\Source" "C:\Target" -Force -Recurse | Out-Null
DIR "C:\Target"
Write-Host "Not OK"
脚本输出:
Directory: C:\Target
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 4/11/2016 3:45 PM SampleSourceFolderLevel1
-a--- 4/11/2016 3:35 PM 0 SampleFileLevel0.txt
OK
d---- 4/11/2016 3:45 PM SampleSourceFolderLevel1
d---- 4/11/2016 3:45 PM Source
-a--- 4/11/2016 3:35 PM 0 SampleFileLevel0.txt
Not OK
有什么办法可以让Copy-Item工作得像...
ROBOCOPY $sourceLog $targetLog /E | Out-Null
??
Thanks in advance
md 'C:\Target' -Force | out-null
确保文件夹存在。 - Martin Brandl