微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[Powershell]:复制项目的第二次执行创建子文件夹5.1.17763.1007

如何解决[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

在我的计算机上,我没有发现任何异常行为。第一次之后,源文件夹将被复制到目标位置。第二轮没有任何改变,第三轮也没有改变。

enter image description here

,

该行为是默认行为:

假设您要复制和重命名一个项目,所以您要这样做:

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:\toastC:\test相同,但在此过程中已重命名。
但是,如果您提供目标对象所在的目标路径,则它将位于其中。

 Copy-Item -path C:\test -Destination D:\toast 

D:\toast在我们先前的操作中确实存在,因此将在其中创建C:\test的副本:D:\toast\test

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?