60

默认情况下,从命令提示符复制将提示您覆盖目标位置中已存在的文件。

您可以添加“/Y”来表示“全部同意”替换。

但是你怎么能对所有人说“不”呢?

换句话说,我想从一个目录中复制目标中尚不存在的所有内容。

我看到的最接近的是 XCOPY 参数,它只在特定的 mod-datetime 之后复制东西。

4

14 回答 14

74

除非存在您不想复制自上次复制以来已更改的源中的现有文件的情况,否则为什么不使用带有 /D 的 XCOPY 而不指定日期呢?

于 2008-10-10T13:33:00.840 回答
33
echo "No" | copy/-Y c:\source c:\Dest\
于 2011-12-16T07:47:14.467 回答
21

您可以使用单行“n”创建一个文本文件,然后运行您的命令并在其后放置 < nc.txt。我这样做是为了复制超过 145,000 个实例,其中“不覆盖”是我想要的,并且以这种方式运行良好。

或者你可以用一些东西按住 n 键,但这比使用 < 管道输入要花更长的时间。

于 2010-01-08T19:24:00.547 回答
11

这是一种解决方法。如果要从 A 复制 B 中尚不存在的所有内容:

将 A 复制到新目录 C。将 B 复制到 C,覆盖与 A 重叠的所有内容。将 C 复制到 B。

于 2008-10-10T13:23:09.720 回答
7

我使用XCOPY以下参数来复制 .NET 程序集:

/D /Y /R /H 

/D:m-d-y - Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time.

/Y - Suppresses prompting to confirm you want to overwrite an existing destination file.

/R - Overwrites read-only files.

/H - Copies hidden and system files also.
于 2008-10-10T13:54:05.647 回答
7

我知道你们都认为 /D: date 会使用 date 的东西,但只是 /D 没有: 完全符合我们的要求,所以......

xcopy {Source} {Destination} /E /D 

将复制而不覆盖以拾取那些新文件或由于某种原因之前可能失败的文件。

试试吧,它有效。

于 2016-04-07T15:39:17.047 回答
5

我希望xxcopy有一个选择

答对了:

http://www.xxcopy.com/xxcopy27.htm#tag_231

2.3   By comparison with the file in destination

    The switches in this group select files based on the
    comparison between the files in the source and those in
    the destination.  They are often used for periodic backup
    and directory synchronization purposes. These switches
    were originally created as variations of directory backup.
    They are also convenient for selecting files for deletion.

2.3.1  by Presence/Absence

    The /BB and /U switches are the two switches which select
    files by the pure presence or absence as the criteria.
    Other switches in the this group (Group 2.3) are also
    affected by the file in the destination, but for a
    particular characteristics for comparison's sake.

    /BB  Selects files that are present in source but not in destination.
    /U   Selects files that are present in both source and destination.

-亚当

于 2008-10-10T13:21:27.320 回答
5

这很好用

no | cp -rf c:\source c:\Dest\
于 2012-05-03T09:44:20.573 回答
4

回声 N | 复制 /-y $(SolutionDir)SomeDir $(OutDir)

于 2014-07-18T10:32:35.210 回答
3

试试这个:

robocopy "source" "destination" /e /b /copyall /xo /it

将该行复制到记事本中并保存为 .bat 文件。运行该文件,它会将所有内容从源复制到目标。当您再次运行它时,它不会替换相同的文件。当您更改或文件更改时,它将替换目的地的文件。

测试一下。我用一些作品创建了一个 .txt 文件,运行脚本,更改 .txt 文件上的措辞并再次运行脚本,它仅替换源中的更改文件。

/e=Copies subdirectories. Note that this option includes empty directories
/b=Copies files in Backup mode
/copyall=Copies all file information
/xo=Excludes older files. (this is what prevents it from copy the same file over and over)
/it=Includes "tweaked" files. (this will allow the copy and replace of modified files)
于 2014-08-27T13:58:40.683 回答
3

谢谢你。我正在使用命令行实用程序 AzCopy (v 3.1.0.93) 将大约 100 万个文件从我的本地 PC 移动到我的 Azure blob 存储。我有一些重复,无法照看副本来回答每个提示,并且不想重新上传相同的文件。

AzCopy 实用程序提供 /Y 命令来禁止确认提示,但最终会告诉它覆盖目标文件。走这条路,我能够让它不重新上传文件。但是,它看起来确实有点 hack,因为它实际上并没有用“否”来回答提示,而是我收到错误“当用户需要在几个给定选项中做出选择时没有收到输入”。但不上传文件。

这是我使用的命令:echo n | AzCopy /Source:"{file path}" /Dest:"{blob 存储 URL}" /DestKey:{key}

希望这对下一个人有所帮助。

于 2015-05-01T12:36:58.603 回答
2

根据要复制的文件的大小和数量,您可以先将目标目录复制到源目录上,“全部同意”,然后执行您正在执行的原始副本,同时设置“全部同意”。那应该给你同样的结果。

于 2008-10-10T13:23:00.593 回答
0

我们通过“invoke-command”使用“robocopy”来复制我们环境中的大量虚拟机。我们发现“robocopy”有时会意外退出,整个过程会停止。所以我们决定使用“xcopy”。现在我们正在检查它的工作,并使用该功能(powershell)“创建”“并非所有人”选项:

函数 gen_long_no([string]$path) { $result = ""; Get-ChildItem $path -Recurse | ? { if ($_.PSIsContainer -eq $false) { $result += "n" } }; 返回$结果}

也许可以帮助某人。

于 2016-03-29T08:28:46.860 回答
0

Adding the switches for subdirectories and verification work just fine. echo n | xcopy/-Y/s/e/v c:\source*.* c:\Dest\

于 2018-11-16T03:47:17.230 回答