这看起来非常简单,也许我只是忽略了适当的标志,但是我如何在一个命令中将一个文件从一个目录复制到另一个目录并在目标目录中重命名它呢?这是我的命令:

if exist "bin\development\whee.config.example"
  if not exist "TestConnectionExternal\bin\Debug\whee.config"
    xcopy "bin\development\whee.config.example"
          "TestConnectionExternal\bin\Debug\whee.config"

它每次都会提示我以下内容:

TestConnectionExternal \ bin \调试\哟。配置指定文件名 或目标上的目录名(F =文件,D =目录)?

我想压制这个提示;答案总是F。


当前回答

我遇到了同样的问题时,试图复制文件与新名称只有当文件不存在的目标或存在(与新名称),但是旧的。解决方案是在目标文件名的末尾添加* char。例子:

xcopy "C:\src\whee.config.txt" "C:\dest\bee.config.txt*" /D /Y

其他回答

我建议robocopy而不是copy或xcopy。在客户端或服务器上作为命令或GUI使用。容忍网络暂停,您可以选择忽略文件属性时复制复制的文件属性。哦,它支持多核机器,因此文件之间“并行”复制要快得多,而不是按顺序复制。robocopy可以在MS TechNet上找到。

因为您实际上并没有更改文件名,所以可以从目标文件中取出文件名,这样就不会有问题了。

xcopy bin\development\whee.config.example TestConnectionExternal\bin\Debug\  /Y

当目标目录保证存在时,当源可能同样是一个文件或目录时,这种方法工作得很好。

XCOPY中有一些未记录的特性。你可以使用:

本\开发\ whee.config选择复制文件”。”“c: \ mybackup \ TestConnectionExternal \ bin \调试\ whee.config *”

我今天刚测试过。: -)

“xxxxxxxxxxxx”是否指定文件名 或目标上的目录名

(F = file, D = directory)? D

if a File : (echo F)
if a Directory (echo D)

请登录http://technet.microsoft.com/en-us/library/bb491035.aspx

这里是主要的问题是“……如果Destination不包含现有目录,并且不以反斜杠()结束,则会出现以下消息:…

目标是否指定了文件名 或目标上的目录名 (F =文件,D =目录)?

可以使用/i命令行选项禁止此消息,这将导致xcopy假定目标是一个目录,如果源是多个文件或目录的话。

花了点时间,但我只需要RTFM。