如何解决[Powershell]:复制项目的第二次执行创建子文件夹5.1.17763.1007
搜索遗言之后,我需要在此处发布问题: 我想做一个简单的任务:
copy-item -path "C:\Folder copied" -destination "C:\Folder copied_New" -recurse
假定目录“ C:”中确实存在“ Folder copied_New”目录,PS将创建一个文件夹,并将该文件夹(及其内容)“ C:\ Folder copied”复制到“ Folder copied_New”
但是,如果再次执行该命令,则会发生以下情况:
创建的Powershell:“ C:\ Folder copied_New \ Folder copied”(内容“ Test.txt”也已复制到此新创建的文件夹中...
第3次执行命令时,它会说该文件夹已经存在...
所以我的问题是: 第二次运行命令后,PS应该抛出错误“ Folder copied_New”。我该怎么办?
我尝试在路径中使用和不使用“”来复制和重命名新文件夹,但是没有任何效果。我确实考虑过使用-Testpath,但我想我要求社区提供一种更简单的(BestPractice)方法。
在此先感谢您的阅读和建议!
Well explained in another question but same issue
解决方法
这不是一个答案,但是很长才能写评论。 您可以运行以下脚本并向我们显示输出吗?
$root = "$($env:TEMP)\test"
$source = "$($root)\Logfiles"
$destination = "$($root)\Drawings\Logs"
# Verify folders don't exist yet
if (Test-Path $source) {Throw}
if (Test-Path $destination) {Throw}
# Set up
New-Item $source,$destination -ItemType Directory -Force | Out-Null # Create folders
New-Item "$($source)\testfile" -ItemType File -Force | Out-Null # Create a testfile
# Show files/folders before copy
Write-Output "Before copy"
Get-ChildItem $root -Recurse | select fullname
# Copy first time
Copy-Item -path $source -destination $destination -Recurse -ErrorAction Continue
Write-Output "After first time copy"
Get-ChildItem $root -Recurse | select fullname
# Copy second time
Copy-Item -path $source -destination $destination -Recurse -ErrorAction Continue
Write-Output "After second time copy"
Get-ChildItem $root -Recurse | select fullname
# Copy third time
Copy-Item -path $source -destination $destination -Recurse -ErrorAction Continue
Write-Output "After third time copy"
Get-ChildItem $root -Recurse | select fullname
# Clean up
Remove-Item $source,$destination -Force -Recurse | Out-Null
在我的计算机上,我没有发现任何异常行为。第一次之后,源文件夹将被复制到目标位置。第二轮没有任何改变,第三轮也没有改变。
,该行为是默认行为:
假设您要复制和重命名一个项目,所以您要这样做:
Copy-Item -path source.txt -Destination destination.txt
您期望一个名为destination.txt
的文件,其内容为source.txt
。
如果要复制文件但不重命名,请执行以下操作:
Copy-Item -path source.txt -Destination C:\test
您希望文件source.txt
出现在C:\test
中。如果C:\test
不存在,它将被创建。
现在让我们尝试在目标不存在时复制文件夹。
Copy-Item -path C:\test -Destination D:\toast
目标不存在,因此您通过将源文件夹复制到目标来创建它。目标的内容将与源的内容相同。文件夹D:\toast
与C:\test
相同,但在此过程中已重命名。
但是,如果您提供目标对象所在的目标路径,则它将位于其中。
Copy-Item -path C:\test -Destination D:\toast
D:\toast
在我们先前的操作中确实存在,因此将在其中创建C:\test
的副本:D:\toast\test
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。