如何在不覆盖现有文件的情况下复制文件或文件夹?
若要在远程路径上复制文件/文件夹而不覆盖现有文件/文件夹,可以使用多个cmdlet,例如Copy-Item,Robocoy和Xcopy等。由于Copy-Item是标准cmdlet,因此我们将检查其是否受支持可以防止覆盖。
如果Copy-Item不起作用,那么我们将检查其替代命令。Copy-Item只会覆盖目标路径上的文件和文件夹,并复制较新的文件。
例如,使用以下命令将文件从源文件夹C:\ Test1复制到目标文件夹C:\ Test2,它只是覆盖文件而无需询问。
示例
Copy-Item C:\Test1\* C:\Test2 -Recurse -Verbose
输出结果
PS C:\Temp> Copy-Item C:\Test1\* C:\Test2 -Recurse -VerboseVERBOSE: Performing the operation "复制文件" on target "Item: C:\Test1\File1.txt
Destination: C:\Test2\File1.txt".
VERBOSE: Performing the operation "复制文件" on target "Item: C:\Test1\File2.txt
Destination: C:\Test2\File2.txt".
我们还有另一个-Confirm参数,但是它只是向用户确认是否需要在目标文件夹上复制文件。如果我们为-Confirm参数选择$True,那么它将询问每个文件是否需要复制,但是如果系统上有数百个文件,则此方法将不起作用
Copy-Item C:\Test1\* -Destination C:\Test2\ -Confirm:$true -Verbose
PS C:\Temp> Copy-Item C:\Test1\* -Destination C:\Test2\ -Confirm:$true -VerboseConfirm
Are you sure you want to perform this action?
Performing the operation "复制文件" on target "Item: C:\Test1\File1.txt Destination:
C:\Test2\File1.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
带-Force参数用于覆盖只读文件内容。因此这也无济于事,因此我们可以使用另一种方法,例如通过Get-ChildItem过滤现有文件并跳过它们,但是这需要编写一些代码并循环,而我们拥有robocopy命令,该命令支持防止覆盖文件/文件夹。
Robocopy C:\Test1\ C:\Test2\ /E /XC /XN /XO
输出结果
PS C:\> Robocopy C:\Test1\ C:\Test2\ /E /XC /XN /XO-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Saturday, August 29, 2020 2:15:33 PM
Source : C:\Test1\
Dest : C:\Test2\
Files : *.*
Options : *.* /S /E /DCOPY:DA /COPY:DAT /XO /XN /XC /R:1000000 /W:30
------------------------------------------------------------------------------
2 C:\Test1\
*EXTRA File 8 File3.txt
100% New File 11 File2.txt
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 0 1 0 0 0
Files : 2 1 1 0 0 1
Bytes : 22 11 11 0 0 8
Times : 0:00:00 0:00:00 0:00:00 0:00:00
Speed : 1833 Bytes/sec.
Speed : 0.104 MegaBytes/min.
Ended : Saturday, August 29, 2020 2:15:33 PM
开关说明如下。
/ E-复制子项(例如,Copy-Command中的-recursive)
/ XC-防止覆盖具有相同时间戳的文件。
/ XN-防止覆盖时间戳比源文件新的文件。
/ XO-防止覆盖时间戳比源文件更早的文件。
以上是 如何在不覆盖现有文件的情况下复制文件或文件夹? 的全部内容, 来源链接: utcz.com/z/356026.html